saki4510t / AudioVideoRecordingSample

Simultaneous audio and video recording sample using MediaCodec/MediaMuxer
Apache License 2.0
960 stars 290 forks source link

Font textures disappear, caused by glDeleteTextures on main thread #11

Open tdanyluk opened 7 years ago

tdanyluk commented 7 years ago

Hello Saki! Thanks for the excellent library! However on the One Plus One phone i discovered that the font textures in the app disappear after pause/resume (changing app). Like this

I think the problem is that glDeleteTextures is called in the main thread. CameraSurfaceRenderer.onSurfaceDestroyed is called in the main thread.

Changing its code solves the problem: This way it is good:

    public void onSurfaceDestroyed() {
        if (DEBUG) Log.v(TAG, "onSurfaceDestroyed:");

        GLSurfaceView parent = mWeakParent.get();
        parent.queueEvent(new Runnable() {
            @Override
            public void run() {
                if (mDrawer != null) {
                    mDrawer.release();
                    mDrawer = null;
                }

                if (mSTexture != null) {
                    mSTexture.release();
                    mSTexture = null;
                }

                GLDrawer2D.deleteTex(hTex);
            }
        });
    }

The error no longer happens however i am not sure that this is the best solution. I would appriciate your kind help.

Best regards Tamás

elyonsaber commented 7 years ago

I also met with this problem on some types of Xiaomi when hardware accelerated is set to true. Thanks to your solution, it seems to work well now!

tdanyluk commented 7 years ago

I'm happy that I could help!