ui/dbus: restrict opengl to gbm-enabled config

We can enable EGL later for non-GBM hosts.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Marc-André Lureau 2023-01-10 17:10:01 +04:00
parent 84a0a2ef0a
commit 4814d3cbf9
2 changed files with 16 additions and 6 deletions

View File

@ -50,7 +50,7 @@ struct _DBusDisplayListener {
G_DEFINE_TYPE(DBusDisplayListener, dbus_display_listener, G_TYPE_OBJECT) G_DEFINE_TYPE(DBusDisplayListener, dbus_display_listener, G_TYPE_OBJECT)
#ifdef CONFIG_OPENGL #ifdef CONFIG_GBM
static void dbus_update_gl_cb(GObject *source_object, static void dbus_update_gl_cb(GObject *source_object,
GAsyncResult *res, GAsyncResult *res,
gpointer user_data) gpointer user_data)
@ -239,7 +239,7 @@ static void dbus_refresh(DisplayChangeListener *dcl)
graphic_hw_update(dcl->con); graphic_hw_update(dcl->con);
} }
#ifdef CONFIG_OPENGL #ifdef CONFIG_GBM
static void dbus_gl_gfx_update(DisplayChangeListener *dcl, static void dbus_gl_gfx_update(DisplayChangeListener *dcl,
int x, int y, int w, int h) int x, int y, int w, int h)
{ {
@ -302,7 +302,7 @@ static void dbus_gfx_update(DisplayChangeListener *dcl,
DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL); DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL);
} }
#ifdef CONFIG_OPENGL #ifdef CONFIG_GBM
static void dbus_gl_gfx_switch(DisplayChangeListener *dcl, static void dbus_gl_gfx_switch(DisplayChangeListener *dcl,
struct DisplaySurface *new_surface) struct DisplaySurface *new_surface)
{ {
@ -369,7 +369,7 @@ static void dbus_cursor_define(DisplayChangeListener *dcl,
NULL); NULL);
} }
#ifdef CONFIG_OPENGL #ifdef CONFIG_GBM
const DisplayChangeListenerOps dbus_gl_dcl_ops = { const DisplayChangeListenerOps dbus_gl_dcl_ops = {
.dpy_name = "dbus-gl", .dpy_name = "dbus-gl",
.dpy_gfx_update = dbus_gl_gfx_update, .dpy_gfx_update = dbus_gl_gfx_update,
@ -417,7 +417,7 @@ dbus_display_listener_constructed(GObject *object)
DBusDisplayListener *ddl = DBUS_DISPLAY_LISTENER(object); DBusDisplayListener *ddl = DBUS_DISPLAY_LISTENER(object);
ddl->dcl.ops = &dbus_dcl_ops; ddl->dcl.ops = &dbus_dcl_ops;
#ifdef CONFIG_OPENGL #ifdef CONFIG_GBM
if (display_opengl) { if (display_opengl) {
ddl->dcl.ops = &dbus_gl_dcl_ops; ddl->dcl.ops = &dbus_gl_dcl_ops;
} }

View File

@ -47,8 +47,10 @@ static DBusDisplay *dbus_display;
static QEMUGLContext dbus_create_context(DisplayGLCtx *dgc, static QEMUGLContext dbus_create_context(DisplayGLCtx *dgc,
QEMUGLParams *params) QEMUGLParams *params)
{ {
#ifdef CONFIG_GBM
eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
qemu_egl_rn_ctx); qemu_egl_rn_ctx);
#endif
return qemu_egl_create_context(dgc, params); return qemu_egl_create_context(dgc, params);
} }
@ -56,7 +58,11 @@ static bool
dbus_is_compatible_dcl(DisplayGLCtx *dgc, dbus_is_compatible_dcl(DisplayGLCtx *dgc,
DisplayChangeListener *dcl) DisplayChangeListener *dcl)
{ {
return dcl->ops == &dbus_gl_dcl_ops || dcl->ops == &dbus_console_dcl_ops; return
#ifdef CONFIG_GBM
dcl->ops == &dbus_gl_dcl_ops ||
#endif
dcl->ops == &dbus_console_dcl_ops;
} }
static void static void
@ -459,7 +465,11 @@ early_dbus_init(DisplayOptions *opts)
DisplayGLMode mode = opts->has_gl ? opts->gl : DISPLAYGL_MODE_OFF; DisplayGLMode mode = opts->has_gl ? opts->gl : DISPLAYGL_MODE_OFF;
if (mode != DISPLAYGL_MODE_OFF) { if (mode != DISPLAYGL_MODE_OFF) {
#ifdef CONFIG_OPENGL
egl_init(opts->u.dbus.rendernode, mode, &error_fatal); egl_init(opts->u.dbus.rendernode, mode, &error_fatal);
#else
error_report("dbus: GL rendering is not supported");
#endif
} }
type_register(&dbus_vc_type_info); type_register(&dbus_vc_type_info);