gtk-egl: 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-7-git-send-email-kraxel@redhat.com
This commit is contained in:
parent
db6cdfbeba
commit
543a7a161f
@ -103,6 +103,7 @@ void gd_egl_switch(DisplayChangeListener *dcl,
|
|||||||
DisplaySurface *surface);
|
DisplaySurface *surface);
|
||||||
QEMUGLContext gd_egl_create_context(DisplayChangeListener *dcl,
|
QEMUGLContext gd_egl_create_context(DisplayChangeListener *dcl,
|
||||||
QEMUGLParams *params);
|
QEMUGLParams *params);
|
||||||
|
void gd_egl_scanout_disable(DisplayChangeListener *dcl);
|
||||||
void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
||||||
uint32_t backing_id,
|
uint32_t backing_id,
|
||||||
bool backing_y_0_top,
|
bool backing_y_0_top,
|
||||||
|
15
ui/gtk-egl.c
15
ui/gtk-egl.c
@ -170,6 +170,16 @@ QEMUGLContext gd_egl_create_context(DisplayChangeListener *dcl,
|
|||||||
return qemu_egl_create_context(dcl, params);
|
return qemu_egl_create_context(dcl, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gd_egl_scanout_disable(DisplayChangeListener *dcl)
|
||||||
|
{
|
||||||
|
VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl);
|
||||||
|
|
||||||
|
vc->gfx.w = 0;
|
||||||
|
vc->gfx.h = 0;
|
||||||
|
vc->gfx.tex_id = 0;
|
||||||
|
gtk_egl_set_scanout_mode(vc, false);
|
||||||
|
}
|
||||||
|
|
||||||
void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
||||||
uint32_t backing_id, bool backing_y_0_top,
|
uint32_t backing_id, bool backing_y_0_top,
|
||||||
uint32_t backing_width, uint32_t backing_height,
|
uint32_t backing_width, uint32_t backing_height,
|
||||||
@ -188,11 +198,6 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
|||||||
eglMakeCurrent(qemu_egl_display, vc->gfx.esurface,
|
eglMakeCurrent(qemu_egl_display, vc->gfx.esurface,
|
||||||
vc->gfx.esurface, vc->gfx.ectx);
|
vc->gfx.esurface, vc->gfx.ectx);
|
||||||
|
|
||||||
if (vc->gfx.tex_id == 0 || vc->gfx.w == 0 || vc->gfx.h == 0) {
|
|
||||||
gtk_egl_set_scanout_mode(vc, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_egl_set_scanout_mode(vc, true);
|
gtk_egl_set_scanout_mode(vc, true);
|
||||||
if (!vc->gfx.fbo_id) {
|
if (!vc->gfx.fbo_id) {
|
||||||
glGenFramebuffers(1, &vc->gfx.fbo_id);
|
glGenFramebuffers(1, &vc->gfx.fbo_id);
|
||||||
|
1
ui/gtk.c
1
ui/gtk.c
@ -688,6 +688,7 @@ static const DisplayChangeListenerOps dcl_egl_ops = {
|
|||||||
.dpy_gl_ctx_destroy = qemu_egl_destroy_context,
|
.dpy_gl_ctx_destroy = qemu_egl_destroy_context,
|
||||||
.dpy_gl_ctx_make_current = gd_egl_make_current,
|
.dpy_gl_ctx_make_current = gd_egl_make_current,
|
||||||
.dpy_gl_ctx_get_current = qemu_egl_get_current_context,
|
.dpy_gl_ctx_get_current = qemu_egl_get_current_context,
|
||||||
|
.dpy_gl_scanout_disable = gd_egl_scanout_disable,
|
||||||
.dpy_gl_scanout_texture = gd_egl_scanout_texture,
|
.dpy_gl_scanout_texture = gd_egl_scanout_texture,
|
||||||
.dpy_gl_update = gd_egl_scanout_flush,
|
.dpy_gl_update = gd_egl_scanout_flush,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user