diff options
2 files changed, 17 insertions, 3 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java index 79515b5ee..35fc87683 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java @@ -251,6 +251,10 @@ public class VirtualDisplayEncoder { inputSurface.release(); inputSurface = null; } + if (mEglCore != null) { + mEglCore.release(); + mEglCore = null; + } } catch (Exception ex) { DebugTool.logError(TAG, "shutDown() failed"); } @@ -262,6 +266,9 @@ public class VirtualDisplayEncoder { * @param Height */ private void setupGLES(int Width, int Height) { + if (mEglCore != null) { + mEglCore.release(); + } mEglCore = new EglCore(null, 0); // This 1x1 offscreen is created just to get the texture name (mTextureId). diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java index d51dbd094..9874c0d7c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java @@ -163,12 +163,15 @@ public class VideoStreamManager extends BaseVideoStreamManager { public void onServiceEnded(SdlSession session, SessionType type) { if (SessionType.NAV.equals(type)) { if (remoteDisplay != null) { - stopStreaming(withPendingRestart); + if (withPendingRestart && isHMIStateVideoStreamCapable(currentOnHMIStatus)) { + stopStreaming(withPendingRestart); + } else { + stopStreaming(); + } } stateMachine.transitionToState(StreamingStateMachine.NONE); transitionToState(SETTING_UP); - - if (withPendingRestart) { + if (withPendingRestart && isHMIStateVideoStreamCapable(currentOnHMIStatus)) { VideoStreamManager manager = VideoStreamManager.this; manager.internalInterface.startVideoService(manager.getLastCachedStreamingParameters(), manager.isEncrypted, withPendingRestart); } @@ -207,6 +210,10 @@ public class VideoStreamManager extends BaseVideoStreamManager { if (hasStarted && (isHMIStateVideoStreamCapable(prevOnHMIStatus)) && (!isHMIStateVideoStreamCapable(currentOnHMIStatus))) { stopVideoStream(); } + if (withPendingRestart && hasStarted && (!isHMIStateVideoStreamCapable(prevOnHMIStatus)) && (isHMIStateVideoStreamCapable(currentOnHMIStatus))) { + VideoStreamManager manager = VideoStreamManager.this; + manager.internalInterface.startVideoService(manager.getLastCachedStreamingParameters(), manager.isEncrypted, withPendingRestart); + } } } }; |