diff options
author | Robert Bragg <robert@linux.intel.com> | 2012-11-09 01:09:16 +0000 |
---|---|---|
committer | Robert Bragg <robert@linux.intel.com> | 2012-11-27 18:16:33 +0000 |
commit | 698a131c4991e4393ce966b968637fba194f252c (patch) | |
tree | 568ac8539fe8e6215aca0ed6ae8e8fc4bf6e1e71 | |
parent | d6a9f2add213ffa5cdbd5f2d206ef49e1781c3f6 (diff) | |
download | cogl-698a131c4991e4393ce966b968637fba194f252c.tar.gz |
glx: avoid use of _COGL_GET_CONTEXT()
Removes some (not all) use of _COGL_GET_CONTEXT() from cogl-winsys-glx.c
Reviewed-by: Neil Roberts <neil@linux.intel.com>
-rw-r--r-- | cogl/winsys/cogl-winsys-glx.c | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/cogl/winsys/cogl-winsys-glx.c b/cogl/winsys/cogl-winsys-glx.c index 29d8cc92..27502009 100644 --- a/cogl/winsys/cogl-winsys-glx.c +++ b/cogl/winsys/cogl-winsys-glx.c @@ -1166,12 +1166,10 @@ _cogl_winsys_onscreen_bind (CoglOnscreen *onscreen) } static void -_cogl_winsys_wait_for_vblank (void) +_cogl_winsys_wait_for_vblank (CoglContext *ctx) { CoglGLXRenderer *glx_renderer; - _COGL_GET_CONTEXT (ctx, NO_RETVAL); - glx_renderer = ctx->display->renderer->winsys; if (glx_renderer->pf_glXGetVideoSync) @@ -1186,13 +1184,11 @@ _cogl_winsys_wait_for_vblank (void) } static uint32_t -_cogl_winsys_get_vsync_counter (void) +_cogl_winsys_get_vsync_counter (CoglContext *ctx) { uint32_t video_sync_count; CoglGLXRenderer *glx_renderer; - _COGL_GET_CONTEXT (ctx, 0); - glx_renderer = ctx->display->renderer->winsys; glx_renderer->pf_glXGetVideoSync (&video_sync_count); @@ -1296,17 +1292,17 @@ _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen, if (blit_sub_buffer_is_synchronized && have_counter && can_wait) { - end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (); + end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context); /* If we have the GLX_SGI_video_sync extension then we can * be a bit smarter about how we throttle blits by avoiding * any waits if we can see that the video sync count has * already progressed. */ if (glx_onscreen->last_swap_vsync_counter == end_frame_vsync_counter) - _cogl_winsys_wait_for_vblank (); + _cogl_winsys_wait_for_vblank (context); } else if (can_wait) - _cogl_winsys_wait_for_vblank (); + _cogl_winsys_wait_for_vblank (context); if (glx_renderer->pf_glXCopySubBuffer) { @@ -1391,7 +1387,7 @@ _cogl_winsys_onscreen_swap_buffers (CoglOnscreen *onscreen) * the vsync counter for each swap request so we can manually * throttle swap_region requests. */ if (have_counter) - end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (); + end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context); if (!glx_renderer->pf_glXSwapInterval) { @@ -1420,10 +1416,10 @@ _cogl_winsys_onscreen_swap_buffers (CoglOnscreen *onscreen) { if (glx_onscreen->last_swap_vsync_counter == end_frame_vsync_counter) - _cogl_winsys_wait_for_vblank (); + _cogl_winsys_wait_for_vblank (context); } else if (can_wait) - _cogl_winsys_wait_for_vblank (); + _cogl_winsys_wait_for_vblank (context); } } else @@ -1432,7 +1428,8 @@ _cogl_winsys_onscreen_swap_buffers (CoglOnscreen *onscreen) glx_renderer->glXSwapBuffers (xlib_renderer->xdpy, drawable); if (have_counter) - glx_onscreen->last_swap_vsync_counter = _cogl_winsys_get_vsync_counter (); + glx_onscreen->last_swap_vsync_counter = + _cogl_winsys_get_vsync_counter (context); } static uint32_t @@ -1825,10 +1822,7 @@ static CoglBool _cogl_winsys_texture_pixmap_x11_create (CoglTexturePixmapX11 *tex_pixmap) { CoglTexturePixmapGLX *glx_tex_pixmap; - - /* FIXME: It should be possible to get to a CoglContext from any - * CoglTexture pointer. */ - _COGL_GET_CONTEXT (ctx, FALSE); + CoglContext *ctx = COGL_TEXTURE (tex_pixmap)->context; if (!_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_TEXTURE_FROM_PIXMAP)) { @@ -1908,16 +1902,12 @@ _cogl_winsys_texture_pixmap_x11_free (CoglTexturePixmapX11 *tex_pixmap) { CoglTexturePixmapGLX *glx_tex_pixmap; - /* FIXME: It should be possible to get to a CoglContext from any - * CoglTexture pointer. */ - _COGL_GET_CONTEXT (ctx, NO_RETVAL); - if (!tex_pixmap->winsys) return; glx_tex_pixmap = tex_pixmap->winsys; - free_glx_pixmap (ctx, glx_tex_pixmap); + free_glx_pixmap (COGL_TEXTURE (tex_pixmap)->context, glx_tex_pixmap); if (glx_tex_pixmap->glx_tex) cogl_object_unref (glx_tex_pixmap->glx_tex); @@ -1930,13 +1920,10 @@ static CoglBool _cogl_winsys_texture_pixmap_x11_update (CoglTexturePixmapX11 *tex_pixmap, CoglBool needs_mipmap) { + CoglContext *ctx = COGL_TEXTURE (tex_pixmap)->context; CoglTexturePixmapGLX *glx_tex_pixmap = tex_pixmap->winsys; CoglGLXRenderer *glx_renderer; - /* FIXME: It should be possible to get to a CoglContext from any CoglTexture - * pointer. */ - _COGL_GET_CONTEXT (ctx, FALSE); - /* If we don't have a GLX pixmap then fallback */ if (glx_tex_pixmap->glx_pixmap == None) return FALSE; |