aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-02-21 10:37:20 +0100
committerGerd Hoffmann <kraxel@redhat.com>2017-02-27 16:15:29 +0100
commitdb6cdfbeba791a2e5047a44f61d068cefa0b7c91 (patch)
treec84256c35380801d9d679f3cbadcfc5afd740825
parent46ffd0c03114acddc84d8fe5be30d04d6bb2b2cb (diff)
downloadqemu-db6cdfbeba791a2e5047a44f61d068cefa0b7c91.zip
qemu-db6cdfbeba791a2e5047a44f61d068cefa0b7c91.tar.gz
qemu-db6cdfbeba791a2e5047a44f61d068cefa0b7c91.tar.bz2
sdl2: add scanout_disable support
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-id: 1487669841-13668-6-git-send-email-kraxel@redhat.com
-rw-r--r--include/ui/sdl2.h1
-rw-r--r--ui/sdl2-gl.c16
-rw-r--r--ui/sdl2.c1
3 files changed, 13 insertions, 5 deletions
diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h
index 2de792f..aaf226c 100644
--- a/include/ui/sdl2.h
+++ b/include/ui/sdl2.h
@@ -62,6 +62,7 @@ int sdl2_gl_make_context_current(DisplayChangeListener *dcl,
QEMUGLContext ctx);
QEMUGLContext sdl2_gl_get_current_context(DisplayChangeListener *dcl);
+void sdl2_gl_scanout_disable(DisplayChangeListener *dcl);
void sdl2_gl_scanout_texture(DisplayChangeListener *dcl,
uint32_t backing_id,
bool backing_y_0_top,
diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c
index e25aa3b..1cd77e2 100644
--- a/ui/sdl2-gl.c
+++ b/ui/sdl2-gl.c
@@ -184,6 +184,17 @@ QEMUGLContext sdl2_gl_get_current_context(DisplayChangeListener *dcl)
return (QEMUGLContext)sdlctx;
}
+void sdl2_gl_scanout_disable(DisplayChangeListener *dcl)
+{
+ struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);
+
+ assert(scon->opengl);
+ scon->w = 0;
+ scon->h = 0;
+ scon->tex_id = 0;
+ sdl2_set_scanout_mode(scon, false);
+}
+
void sdl2_gl_scanout_texture(DisplayChangeListener *dcl,
uint32_t backing_id,
bool backing_y_0_top,
@@ -204,11 +215,6 @@ void sdl2_gl_scanout_texture(DisplayChangeListener *dcl,
SDL_GL_MakeCurrent(scon->real_window, scon->winctx);
- if (scon->tex_id == 0 || scon->w == 0 || scon->h == 0) {
- sdl2_set_scanout_mode(scon, false);
- return;
- }
-
sdl2_set_scanout_mode(scon, true);
if (!scon->fbo_id) {
glGenFramebuffers(1, &scon->fbo_id);
diff --git a/ui/sdl2.c b/ui/sdl2.c
index febda80..faf9bdf 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -733,6 +733,7 @@ static const DisplayChangeListenerOps dcl_gl_ops = {
.dpy_gl_ctx_destroy = sdl2_gl_destroy_context,
.dpy_gl_ctx_make_current = sdl2_gl_make_context_current,
.dpy_gl_ctx_get_current = sdl2_gl_get_current_context,
+ .dpy_gl_scanout_disable = sdl2_gl_scanout_disable,
.dpy_gl_scanout_texture = sdl2_gl_scanout_texture,
.dpy_gl_update = sdl2_gl_scanout_flush,
};