summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gsk/gskcairorenderer.c6
-rw-r--r--gsk/gskglrenderer.c35
-rw-r--r--gsk/gskrenderer.c11
-rw-r--r--gsk/gskrendererprivate.h3
4 files changed, 33 insertions, 22 deletions
diff --git a/gsk/gskcairorenderer.c b/gsk/gskcairorenderer.c
index d0766c7450..282bb0f416 100644
--- a/gsk/gskcairorenderer.c
+++ b/gsk/gskcairorenderer.c
@@ -123,11 +123,11 @@ gsk_cairo_renderer_render_node (GskCairoRenderer *self,
}
static void
-gsk_cairo_renderer_render (GskRenderer *renderer,
- GskRenderNode *root,
- GdkDrawingContext *context)
+gsk_cairo_renderer_render (GskRenderer *renderer,
+ GskRenderNode *root)
{
GskCairoRenderer *self = GSK_CAIRO_RENDERER (renderer);
+ GdkDrawingContext *context = gsk_renderer_get_drawing_context (renderer);
cairo_t *cr = gdk_drawing_context_get_cairo_context (context);
gsk_renderer_get_viewport (renderer, &self->viewport);
diff --git a/gsk/gskglrenderer.c b/gsk/gskglrenderer.c
index 7384d04228..373f389907 100644
--- a/gsk/gskglrenderer.c
+++ b/gsk/gskglrenderer.c
@@ -828,15 +828,15 @@ gsk_gl_renderer_clear (GskGLRenderer *self)
#define ORTHO_FAR_PLANE 10000
static void
-gsk_gl_renderer_render (GskRenderer *renderer,
- GskRenderNode *root,
- GdkDrawingContext *context)
+gsk_gl_renderer_render (GskRenderer *renderer,
+ GskRenderNode *root)
{
GskGLRenderer *self = GSK_GL_RENDERER (renderer);
graphene_matrix_t modelview, projection;
graphene_rect_t viewport;
guint i;
int scale_factor;
+ GdkDrawingContext *context;
#ifdef G_ENABLE_DEBUG
GskProfiler *profiler;
gint64 gpu_time, cpu_time;
@@ -845,7 +845,11 @@ gsk_gl_renderer_render (GskRenderer *renderer,
if (self->gl_context == NULL)
return;
+ context = gsk_renderer_get_drawing_context (renderer);
+
+#ifdef G_ENABLE_DEBUG
profiler = gsk_renderer_get_profiler (renderer);
+#endif
gdk_gl_context_make_current (self->gl_context);
@@ -912,15 +916,22 @@ gsk_gl_renderer_render (GskRenderer *renderer,
#endif
out:
- /* XXX: Add GdkDrawingContext API */
- gdk_cairo_draw_from_gl (gdk_drawing_context_get_cairo_context (context),
- gdk_drawing_context_get_window (context),
- self->texture_id,
- GL_TEXTURE,
- scale_factor,
- 0, 0,
- viewport.size.width * scale_factor,
- viewport.size.height * scale_factor);
+ {
+ GdkWindow *window;
+ cairo_t *cr;
+
+ /* XXX: Add GdkDrawingContext API */
+ cr = gdk_drawing_context_get_cairo_context (context);
+ window = gdk_drawing_context_get_window (context);
+
+ gdk_cairo_draw_from_gl (cr, window,
+ self->texture_id,
+ GL_TEXTURE,
+ scale_factor,
+ 0, 0,
+ viewport.size.width * scale_factor,
+ viewport.size.height * scale_factor);
+ }
gdk_gl_context_make_current (self->gl_context);
gsk_gl_renderer_clear_tree (self);
diff --git a/gsk/gskrenderer.c b/gsk/gskrenderer.c
index 323f2c1ffc..ebdb1a4b28 100644
--- a/gsk/gskrenderer.c
+++ b/gsk/gskrenderer.c
@@ -108,8 +108,7 @@ gsk_renderer_real_unrealize (GskRenderer *self)
static void
gsk_renderer_real_render (GskRenderer *self,
- GskRenderNode *root,
- GdkDrawingContext *context)
+ GskRenderNode *root)
{
GSK_RENDERER_WARN_NOT_IMPLEMENTED_METHOD (self, render);
}
@@ -597,12 +596,14 @@ gsk_renderer_render (GskRenderer *renderer,
g_return_if_fail (GSK_IS_RENDERER (renderer));
g_return_if_fail (priv->is_realized);
g_return_if_fail (GSK_IS_RENDER_NODE (root));
- g_return_if_fail (GDK_IS_DRAWING_CONTEXT (context));
+ g_return_if_fail (context == NULL || GDK_IS_DRAWING_CONTEXT (context));
g_return_if_fail (priv->drawing_context == NULL);
g_return_if_fail (priv->root_node == NULL);
g_return_if_fail (root->renderer == renderer);
- priv->drawing_context = g_object_ref (context);
+ if (context != NULL)
+ priv->drawing_context = g_object_ref (context);
+
priv->root_node = gsk_render_node_ref (root);
gsk_render_node_make_immutable (priv->root_node);
@@ -610,7 +611,7 @@ gsk_renderer_render (GskRenderer *renderer,
gsk_profiler_reset (priv->profiler);
#endif
- GSK_RENDERER_GET_CLASS (renderer)->render (renderer, root, context);
+ GSK_RENDERER_GET_CLASS (renderer)->render (renderer, root);
#ifdef G_ENABLE_DEBUG
if (GSK_DEBUG_CHECK (RENDERER))
diff --git a/gsk/gskrendererprivate.h b/gsk/gskrendererprivate.h
index d560d0183d..12671886f0 100644
--- a/gsk/gskrendererprivate.h
+++ b/gsk/gskrendererprivate.h
@@ -41,8 +41,7 @@ struct _GskRendererClass
void (* unrealize) (GskRenderer *renderer);
void (* render) (GskRenderer *renderer,
- GskRenderNode *root,
- GdkDrawingContext *context);
+ GskRenderNode *root);
};
gboolean gsk_renderer_is_realized (GskRenderer *renderer);