Top |
Functions
GdkDisplay * | gdk_draw_context_get_display () |
GdkSurface * | gdk_draw_context_get_surface () |
void | gdk_draw_context_begin_frame () |
void | gdk_draw_context_end_frame () |
gboolean | gdk_draw_context_is_in_frame () |
const cairo_region_t * | gdk_draw_context_get_frame_region () |
Description
GdkDrawContext is the base object used by contexts implementing different rendering methods, such as GdkGLContext or GdkVulkanContext. It provides shared functionality between those contexts.
You will always interact with one of those subclasses.
A GdkDrawContext is always associated with a single toplevel surface.
Functions
gdk_draw_context_get_display ()
GdkDisplay *
gdk_draw_context_get_display (GdkDrawContext *context
);
Retrieves the GdkDisplay the context
is created for
gdk_draw_context_get_surface ()
GdkSurface *
gdk_draw_context_get_surface (GdkDrawContext *context
);
Retrieves the GdkSurface used by the context
.
gdk_draw_context_begin_frame ()
void gdk_draw_context_begin_frame (GdkDrawContext *context
,const cairo_region_t *region
);
Indicates that you are beginning the process of redrawing region
on the context
's surface.
Calling this function begins a drawing operation using context
on the
surface that context
was created from. The actual requirements and
guarantees for the drawing operation vary for different implementations
of drawing, so a GdkCairoContext and a GdkGLContext need to be treated
differently.
A call to this function is a requirement for drawing and must be followed
by a call to gdk_draw_context_end_frame()
, which will complete the
drawing operation and ensure the contents become visible on screen.
Note that the region
passed to this function is the minimum region that
needs to be drawn and depending on implementation, windowing system and
hardware in use, it might be necessary to draw a larger region. Drawing
implementation must use gdk_draw_context_get_frame_region()
to query the
region that must be drawn.
When using GTK, the widget system automatically places calls to
gdk_draw_context_begin_frame()
and gdk_draw_context_end_frame()
via the
use of GskRenderers, so application code does not need to call these
functions explicitly.
gdk_draw_context_end_frame ()
void
gdk_draw_context_end_frame (GdkDrawContext *context
);
Ends a drawing operation started with gdk_draw_context_begin_frame()
and makes the drawing available on screen. See that function for more
details about drawing.
When using a GdkGLContext, this function may call
implicitly before returning; it is not recommended to call glFlush()
explicitly before calling this function.glFlush()
gdk_draw_context_is_in_frame ()
gboolean
gdk_draw_context_is_in_frame (GdkDrawContext *context
);
Returns TRUE
if context
is in the process of drawing to its surface
after a call to gdk_draw_context_begin_frame()
and not yet having called
gdk_draw_context_end_frame()
.
In this situation, drawing commands may be effecting the contents of a
context
's surface.
Returns
TRUE
if the context is between gdk_draw_context_begin_frame()
and gdk_draw_context_end_frame()
calls.
gdk_draw_context_get_frame_region ()
const cairo_region_t *
gdk_draw_context_get_frame_region (GdkDrawContext *context
);
Retrieves the region that is currently in the process of being repainted.
After a call to gdk_draw_context_begin_frame()
this function will return
a union of the region passed to that function and the area of the surface
that the context
determined needs to be repainted.
If context
is not in between calls to gdk_draw_context_begin_frame()
and
gdk_draw_context_end_frame()
, NULL
will be returned.