summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2016-02-17 14:53:40 +0100
committerThomas Reufer <thomas@reufer.ch>2016-02-17 14:53:40 +0100
commitf77d07a3730d17c2fab9662b7336c78508897c36 (patch)
treee6b30242ac6bbd71422321c04a896c8dd537655d
parentd7e51e632dca438ccecf4bfae8050f5865b7b490 (diff)
downloadvdr-plugin-rpihddevice-f77d07a3730d17c2fab9662b7336c78508897c36.tar.gz
vdr-plugin-rpihddevice-f77d07a3730d17c2fab9662b7336c78508897c36.tar.bz2
wait until dispmanx element is removed after OSD reset
-rw-r--r--HISTORY1
-rw-r--r--ovgosd.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/HISTORY b/HISTORY
index ba51a17..934ae77 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5,6 +5,7 @@ VDR Plugin 'rpihddevice' Revision History
- set device name
- add option for dual display usage, see README
- fixed:
+ - wait until dispmanx element is removed after OSD reset
- proper release default surface after OSD reset
- don't ignore anti alias option for scaled bitmap drawing
- ignore pts from erroneous packets to avoid pts jumps on broken streams
diff --git a/ovgosd.c b/ovgosd.c
index 6a155a9..347a605 100644
--- a/ovgosd.c
+++ b/ovgosd.c
@@ -1842,7 +1842,7 @@ protected:
if (eglMakeCurrent(egl.display, egl.surface, egl.surface,
egl.context) == EGL_FALSE)
- ELOG("failed to connect context to surface: %s!",
+ ELOG("[EGL] failed to connect context to surface: %s!",
cEgl::errStr(eglGetError()));
egl.currentSurface = egl.surface;
@@ -1883,14 +1883,16 @@ protected:
if (eglMakeCurrent(egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE,
EGL_NO_CONTEXT) == EGL_FALSE)
- ELOG("failed to release active surface from context: %s!",
+ ELOG("[EGL] failed to release active surface from context: %s!",
cEgl::errStr(eglGetError()));
if (eglDestroySurface(egl.display, egl.surface) == EGL_FALSE)
ELOG("[EGL] failed to destroy surface: %s!",
cEgl::errStr(eglGetError()));
+ update = vc_dispmanx_update_start(0);
vc_dispmanx_element_remove(update, egl.window.element);
+ vc_dispmanx_update_submit_sync(update);
vc_dispmanx_display_close(display);
DLOG("cOvgThread() thread reset");