Хочу написать простой движек для обоев, с использованием NDK. Opengl контекст управляется и создается на стороне Java, но рендеринг посредством JNI осуществляется на стороне C++.
Возникла проблема: в превью режиме обои отображаются как нужно, но при применении на домашнем экране часть графики пропадает. Думаю, что это связано с тем, что нативная часть обойки является статической библиотекой, по этому к ней имеют доступ несколько потоков. Поток из превью режима не корректно завершается и мешает потоку который отображает обои на домашнем экране.
В логе видно, как несколько потоков мешают друг другу:
TID
17422 : MyService.onCreateEngine() -> com.android.gl2jni.MyService$MyGLEngine@5f0acb6
17422 : MyGLEngine.onVisibilityChanged(true)
17732 : MyRender.onSurfaceCreated()
17732 : MyRender.onSurfaceChanged()
17422 : native.onResume()
17422 : MyGLEngine.onVisibilityChanged(false)
17422 : native.onPause()
17732 : native.resize(1080, 1920)
17732 : native.setupGraphics(1080, 1920)
17422 : MyGLEngine.onVisibilityChanged(true)
17422 : native.onResume()
17732 : MyRender.onSurfaceChanged()
17732 : native.resize(1080, 1920)
17422 : MyService.onCreateEngine() -> com.android.gl2jni.MyService$MyGLEngine@2a46924 (В этом месте жмем кнопку применить)
17422 : MyGLEngine.onVisibilityChanged(true)
17422 : native.onResume()
17422 : MyGLEngine.onVisibilityChanged(false)
17422 : native.onPause()
17869 : MyRender.onSurfaceCreated()
17869 : MyRender.onSurfaceChanged()
17869 : native.resize(1080, 1920)
17869 : after glUseProgram() glError (0x501)
17422 : MyGLEngine.onVisibilityChanged(false)
17422 : native.onPause()
17422 : MyGLEngine.onVisibilityChanged(true)
17422 : native.onResume()
17869 : MyRender.onSurfaceChanged()
17869 : native.resize(1080, 1920)
17869 : after glUseProgram() glError (0x501)
17869 : after glUseProgram() glError (0x501)
...
17869 : after glUseProgram() glError (0x501)
17869 : after glUseProgram() glError (0x501)
17422 : MyGLEngine.onDestroy()
17869 : after glUseProgram() glError (0x501)
17869 : after glUseProgram() glError (0x501)
...
Вопрос как корректно завершить поток из превью режима? Код живых обоев можно посмотреть тут ссылка на github
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть файл с изображением который я должен передать как поле String в JSONЯ преобразую файл с изображением
Начал изучать java и все никак не могу понять зачем нужен boolean, было приведено много примеров, но это понятие до меня не доходит, кто нибудь обьясните...
Есть две ентити Book и Author и есть третья ентити для их связи (id, id-author, id-book)
Никак не могу понять в чем делоПересмотрел кучу всего на эту тему, но мало чего помогло