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