mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-08 09:40:10 +00:00
API: Add gsk_renderer_realize_for_display()
This makes realizing a renderer without a surface explicit. And more importantly, it allows passing a different display than the default one.
This commit is contained in:
parent
df09975753
commit
d0bf33339e
@ -293,6 +293,8 @@ gsk_renderer_do_realize (GskRenderer *renderer,
|
|||||||
*
|
*
|
||||||
* Since GTK 4.6, the surface may be `NULL`, which allows using
|
* Since GTK 4.6, the surface may be `NULL`, which allows using
|
||||||
* renderers without having to create a surface.
|
* renderers without having to create a surface.
|
||||||
|
* Since GTK 4.14, it is recommended to use [method@Gsk.Renderer.realize_for_display]
|
||||||
|
* instead.
|
||||||
*
|
*
|
||||||
* Note that it is mandatory to call [method@Gsk.Renderer.unrealize] before
|
* Note that it is mandatory to call [method@Gsk.Renderer.unrealize] before
|
||||||
* destroying the renderer.
|
* destroying the renderer.
|
||||||
@ -325,13 +327,33 @@ gsk_renderer_realize (GskRenderer *renderer,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->is_realized = TRUE;
|
/**
|
||||||
|
* gsk_renderer_realize_for_display:
|
||||||
|
* @renderer: a `GskRenderer`
|
||||||
|
* @display: the `GdkDisplay` renderer will be used on
|
||||||
|
* @error: return location for an error
|
||||||
|
*
|
||||||
|
* Creates the resources needed by the @renderer to render the scene
|
||||||
|
* graph.
|
||||||
|
*
|
||||||
|
* Note that it is mandatory to call [method@Gsk.Renderer.unrealize] before
|
||||||
|
* destroying the renderer.
|
||||||
|
*
|
||||||
|
* Returns: Whether the renderer was successfully realized
|
||||||
|
*
|
||||||
|
* Since: 4.14
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gsk_renderer_realize_for_display (GskRenderer *renderer,
|
||||||
|
GdkDisplay *display,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GSK_IS_RENDERER (renderer), FALSE);
|
||||||
|
g_return_val_if_fail (!gsk_renderer_is_realized (renderer), FALSE);
|
||||||
|
g_return_val_if_fail (display == NULL || GDK_IS_DISPLAY (display), FALSE);
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (renderer), "realized");
|
return gsk_renderer_do_realize (renderer, display, NULL, error);
|
||||||
if (surface)
|
|
||||||
g_object_notify (G_OBJECT (renderer), "surface");
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -47,6 +47,10 @@ GDK_AVAILABLE_IN_ALL
|
|||||||
gboolean gsk_renderer_realize (GskRenderer *renderer,
|
gboolean gsk_renderer_realize (GskRenderer *renderer,
|
||||||
GdkSurface *surface,
|
GdkSurface *surface,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
GDK_AVAILABLE_IN_4_14
|
||||||
|
gboolean gsk_renderer_realize_for_display (GskRenderer *renderer,
|
||||||
|
GdkDisplay *display,
|
||||||
|
GError **error);
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
void gsk_renderer_unrealize (GskRenderer *renderer);
|
void gsk_renderer_unrealize (GskRenderer *renderer);
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
|
Loading…
Reference in New Issue
Block a user