wgl: Factor out some repetitive code into inline functions.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 16 Jun 2009 20:30:59 +0000 (21:30 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 17 Jun 2009 09:08:25 +0000 (10:08 +0100)
src/gallium/state_trackers/wgl/shared/stw_context.c

index 662b5fbcd2aa4216ec9360e9d8b097ca7a2b4d32..1c217699ab1e26e6bb0c8841be8f10f324b57cc2 100644 (file)
 #include "stw_context.h"
 #include "stw_tls.h"
 
+
+static INLINE struct stw_context *
+stw_context(GLcontext *glctx)
+{
+   if(!glctx)
+      return NULL;
+   assert(glctx->DriverCtx);
+   return (struct stw_context *)glctx->DriverCtx;
+}
+
+static INLINE struct stw_context *
+stw_current_context(void)
+{
+   GET_CURRENT_CONTEXT( glctx );
+   return stw_context(glctx);
+}
+
 BOOL
 stw_copy_context(
    UINT_PTR hglrcSrc,
@@ -194,11 +211,10 @@ stw_delete_context(
    pipe_mutex_unlock( stw_dev->mutex );
 
    if (ctx) {
-      GLcontext *glctx = ctx->st->ctx;
-      GET_CURRENT_CONTEXT( glcurctx );
-
+      struct stw_context *curctx = stw_current_context();
+      
       /* Unbind current if deleting current context. */
-      if (glcurctx == glctx)
+      if (curctx == ctx)
          st_make_current( NULL, NULL, NULL );
 
       st_destroy_context(ctx->st);
@@ -230,13 +246,8 @@ stw_release_context(
     * current for this thread.  We should check that and return False
     * if not the case.
     */
-   {
-      GLcontext *glctx = ctx->st->ctx;
-      GET_CURRENT_CONTEXT( glcurctx );
-
-      if (glcurctx != glctx)
-         return FALSE;
-   }
+   if (ctx != stw_current_context())
+      return FALSE;
 
    if (stw_make_current( NULL, 0 ) == FALSE)
       return FALSE;
@@ -248,14 +259,9 @@ stw_release_context(
 UINT_PTR
 stw_get_current_context( void )
 {
-   GET_CURRENT_CONTEXT( glcurctx );
    struct stw_context *ctx;
 
-   if(!glcurctx)
-      return 0;
-   
-   ctx = (struct stw_context *)glcurctx->DriverCtx;
-   assert(ctx);
+   ctx = stw_current_context();
    if(!ctx)
       return 0;
    
@@ -265,14 +271,9 @@ stw_get_current_context( void )
 HDC
 stw_get_current_dc( void )
 {
-   GET_CURRENT_CONTEXT( glcurctx );
    struct stw_context *ctx;
 
-   if(!glcurctx)
-      return NULL;
-   
-   ctx = (struct stw_context *)glcurctx->DriverCtx;
-   assert(ctx);
+   ctx = stw_current_context();
    if(!ctx)
       return NULL;
    
@@ -284,19 +285,17 @@ stw_make_current(
    HDC hdc,
    UINT_PTR hglrc )
 {
+   struct stw_context *curctx;
    struct stw_context *ctx;
-   GET_CURRENT_CONTEXT( glcurctx );
    struct stw_framebuffer *fb;
 
    if (!stw_dev)
       goto fail;
 
-   if (glcurctx != NULL) {
-      struct stw_context *curctx;
-      curctx = (struct stw_context *) glcurctx->DriverCtx;
-
+   curctx = stw_current_context();
+   if (curctx != NULL) {
       if (curctx->hglrc != hglrc)
-        st_flush(glcurctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+        st_flush(curctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
       
       /* Return if already current. */
       if (curctx->hglrc == hglrc && curctx->hdc == hdc)