/** * clutter_cex100_get_egl_display: * * Retrieves the EGL display used by Clutter, if it supports the * EGL windowing system and if it is running using an EGL backend. * * Return value: the EGL display used by Clutter, or 0 * * Since: 1.10 */ EGLDisplay clutter_cex100_get_egl_display (void) { ClutterBackend *backend; if (!_clutter_context_is_initialized ()) { g_critical ("The Clutter backend has not been initialized yet"); return 0; } backend = clutter_get_default_backend (); if (!CLUTTER_IS_BACKEND_CEX100 (backend)) { g_critical ("The Clutter backend is not a CEX100 backend"); return 0; } #if COGL_HAS_EGL_SUPPORT return cogl_egl_context_get_egl_display (backend->cogl_context); #else return 0; #endif }
void clutter_set_allowed_drivers (const char *drivers) { if (_clutter_context_is_initialized ()) { g_warning ("Clutter has already been initialized.\n"); return; } allowed_drivers = g_strdup (drivers); }
/** * clutter_win32_disable_event_retrieval * * Disables retrieval of Windows messages in the main loop. Use to * create event-less canvas. * * This function can only be called before calling clutter_init(). * * Since: 0.8 */ void clutter_win32_disable_event_retrieval (void) { if (_clutter_context_is_initialized ()) { g_warning ("clutter_win32_disable_event_retrieval() can only be " "called before clutter_init()"); return; } _no_event_retrieval = TRUE; }
/** * clutter_x11_set_display: * @xdpy: pointer to a X display connection. * * Sets the display connection Clutter should use; must be called * before clutter_init(), clutter_init_with_args() or other functions * pertaining Clutter's initialization process. * * If you are parsing the command line arguments by retrieving Clutter's * #GOptionGroup with clutter_get_option_group() and calling * g_option_context_parse() yourself, you should also call * clutter_x11_set_display() before g_option_context_parse(). * * Since: 0.8 */ void clutter_x11_set_display (Display *xdpy) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } _foreign_dpy= xdpy; }
/** * clutter_x11_disable_event_retrieval: * * Disables the internal polling of X11 events in the main loop. * * Libraries or applications calling this function will be responsible of * polling all X11 events. * * You also must call clutter_x11_handle_event() to let Clutter process * events and maintain its internal state. * * This function can only be called before calling clutter_init(). * * Even with event handling disabled, Clutter will still select * all the events required to maintain its internal state on the stage * Window; compositors using Clutter and input regions to pass events * through to application windows should not rely on an empty input * region, and should instead clear it themselves explicitly using the * XFixes extension. * * This function should not be normally used by applications. * * Since: 0.8 */ void clutter_x11_disable_event_retrieval (void) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } _no_xevent_retrieval = TRUE; }
/** * clutter_gdk_set_display: * @display: pointer to a GDK display connection. * * Sets the display connection Clutter should use; must be called * before clutter_init(), clutter_init_with_args() or other functions * pertaining Clutter's initialization process. * * If you are parsing the command line arguments by retrieving Clutter's * #GOptionGroup with clutter_get_option_group() and calling * g_option_context_parse() yourself, you should also call * clutter_gdk_set_display() before g_option_context_parse(). * * Since: 0.8 */ void clutter_gdk_set_display (GdkDisplay *display) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } _foreign_dpy = g_object_ref (display); }
/** * clutter_wayland_set_compositor_display: * @display: A compositor side struct wl_display pointer * * This informs Clutter of your compositor side Wayland display * object. This must be called before calling clutter_init(). * * Since: 1.8 * Stability: unstable */ void clutter_wayland_set_compositor_display (struct wl_display *display) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } _wayland_compositor_display = display; }
/** * clutter_x11_set_use_stereo_stage: * @use_stereo: %TRUE if the stereo stages should be used if possible. * * Sets whether the backend object for Clutter stages, will, * if possible, be created with the ability to support stereo drawing * (drawing separate images for the left and right eyes). * * This function must be called before clutter_init() is called. * During paint callbacks, cogl_framebuffer_is_stereo() can be called * on the framebuffer retrieved by cogl_get_draw_framebuffer() to * determine if stereo support was successfully enabled, and * cogl_framebuffer_set_stereo_mode() to determine which buffers * will be drawn to. * * Note that this function *does not* cause the stage to be drawn * multiple times with different perspective transformations and thus * appear in 3D, it simply enables individual ClutterActors to paint * different images for the left and and right eye. * * Since: 1.22 */ void clutter_x11_set_use_stereo_stage (gboolean use_stereo) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } CLUTTER_NOTE (BACKEND, "STEREO stages are %s", use_stereo ? "enabled" : "disabled"); clutter_enable_stereo = use_stereo; }
/** * clutter_x11_set_use_argb_visual: * @use_argb: %TRUE if ARGB visuals should be requested by default * * Sets whether the Clutter X11 backend should request ARGB visuals by default * or not. * * By default, Clutter requests RGB visuals. * * If no ARGB visuals are found, the X11 backend will fall back to * requesting a RGB visual instead. * * ARGB visuals are required for the #ClutterStage:use-alpha property to work. * * This function can only be called once, and before clutter_init() is * called. * * Since: 1.2 */ void clutter_x11_set_use_argb_visual (gboolean use_argb) { if (_clutter_context_is_initialized ()) { g_warning ("%s() can only be used before calling clutter_init()", G_STRFUNC); return; } CLUTTER_NOTE (BACKEND, "ARGB visuals are %s", use_argb ? "enabled" : "disabled"); clutter_enable_argb = use_argb; }
/** * clutter_x11_has_composite_extension: * * Retrieves whether Clutter is running on an X11 server with the * XComposite extension * * Return value: %TRUE if the XComposite extension is available */ gboolean clutter_x11_has_composite_extension (void) { #if HAVE_XCOMPOSITE static gboolean have_composite = FALSE, done_check = FALSE; int error = 0, event = 0; Display *dpy; if (done_check) return have_composite; if (!_clutter_context_is_initialized ()) { g_critical ("X11 backend has not been initialised"); return FALSE; } dpy = clutter_x11_get_default_display(); if (dpy == NULL) return FALSE; if (XCompositeQueryExtension (dpy, &event, &error)) { int major = 0, minor = 0; if (XCompositeQueryVersion (dpy, &major, &minor)) { if (major >= 0 && minor >= 3) have_composite = TRUE; } } done_check = TRUE; return have_composite; #else return FALSE; #endif /* HAVE_XCOMPOSITE */ }