glx: Fix error messages and debug notes

Instead of using g_critical() inside the create_context() implementation
of the ClutterBackendGLX we should use the passed GError, so that the
error message can bubble up to the caller.
This commit is contained in:
Emmanuele Bassi 2009-12-06 18:56:14 +00:00
parent ede2cbfab0
commit 479fdffc7d

View File

@ -350,7 +350,7 @@ clutter_backend_glx_get_features (ClutterBackend *backend)
if (!(flags & CLUTTER_FEATURE_SYNC_TO_VBLANK))
CLUTTER_NOTE (BACKEND, "DRI vblank setup failed");
}
#endif
#endif /* __linux__ */
if (!(flags & CLUTTER_FEATURE_SYNC_TO_VBLANK))
CLUTTER_NOTE (BACKEND, "no use-able vblank mechanism found");
@ -489,11 +489,11 @@ clutter_backend_glx_create_context (ClutterBackend *backend,
{
g_set_error (error, CLUTTER_INIT_ERROR,
CLUTTER_INIT_ERROR_BACKEND,
"Unable to find suitable fbconfig for GL context");
"Unable to find suitable fbconfig for the GLX context");
return FALSE;
}
CLUTTER_NOTE (GL, "Creating GL Context (display: %p)", xdisplay);
CLUTTER_NOTE (BACKEND, "Creating GLX Context (display: %p)", xdisplay);
backend_glx->gl_context = glXCreateNewContext (xdisplay,
config,
@ -515,15 +515,17 @@ clutter_backend_glx_create_context (ClutterBackend *backend,
: "indirect");
_cogl_set_indirect_context (!is_direct);
/* in order to query the GL and GLX implementation we
* need to bind the GLX context to a Drawable; we create
* a simple, off-screen override-redirect window that we
* then destroy at the end of this function
/* COGL assumes that there is always a GL context selected; in order
* to make sure that a GLX context exists and is made current, we use
* a dummy, offscreen override-redirect window to which we can always
* fall back if no stage is available
*/
xvisinfo = glXGetVisualFromFBConfig (xdisplay, config);
if (xvisinfo == None)
{
g_critical ("Unable to retrieve the X11 visual");
g_set_error (error, CLUTTER_INIT_ERROR,
CLUTTER_INIT_ERROR_BACKEND,
"Unable to retrieve the X11 visual");
return FALSE;
}
@ -539,6 +541,9 @@ clutter_backend_glx_create_context (ClutterBackend *backend,
CWOverrideRedirect,
&attrs);
CLUTTER_NOTE (BACKEND, "Selecting dummy 0x%x for the GLX context",
(unsigned int) backend_glx->dummy_xwin);
glXMakeContextCurrent (xdisplay,
backend_glx->dummy_xwin,
backend_glx->dummy_xwin,
@ -546,7 +551,9 @@ clutter_backend_glx_create_context (ClutterBackend *backend,
if (clutter_x11_untrap_x_errors ())
{
g_critical ("Unable to retrieve the GLX features");
g_set_error (error, CLUTTER_INIT_ERROR,
CLUTTER_INIT_ERROR_BACKEND,
"Unable to select the newly created GLX context");
return FALSE;
}
@ -590,7 +597,7 @@ clutter_backend_glx_ensure_context (ClutterBackend *backend,
CLUTTER_NOTE (BACKEND,
"Setting context for stage of type %s, window: 0x%x",
G_OBJECT_TYPE_NAME (impl),
(int) stage_x11->xwin);
(unsigned int) stage_x11->xwin);
/* no GL context to set */
if (backend_glx->gl_context == None)
@ -621,7 +628,7 @@ clutter_backend_glx_ensure_context (ClutterBackend *backend,
CLUTTER_NOTE (BACKEND,
"MakeContextCurrent dpy: %p, window: 0x%x (%s), context: %p",
backend_x11->xdpy,
(int) stage_x11->xwin,
(unsigned int) stage_x11->xwin,
stage_x11->is_foreign_xwin ? "foreign" : "native",
backend_glx->gl_context);
@ -634,7 +641,7 @@ clutter_backend_glx_ensure_context (ClutterBackend *backend,
if (clutter_x11_untrap_x_errors ())
g_critical ("Unable to make the stage window 0x%x the current "
"GLX drawable",
(int) stage_x11->xwin);
(unsigned int) stage_x11->xwin);
}
}