[cogl/msvc-support] Stub Winsys: Revert restoration of C99ism



commit 7e592aed4bb9437488172d832798a258d71d9edb
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Sep 15 23:24:59 2011 +0800

    Stub Winsys: Revert restoration of C99ism
    
    Seems that the Stub Winsys is required for all builds...
    
    (Re-)purge C99ism from cogl-winsys-stub.c and don't filter out this file
    for the time being.

 cogl/Makefile.am               |    6 ++--
 cogl/winsys/cogl-winsys-stub.c |   52 +++++++++++++++++++++++-----------------
 2 files changed, 33 insertions(+), 25 deletions(-)
---
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index 1b9cada..1351b38 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -398,7 +398,7 @@ dist-hook: ../build/win32/vs9/cogl.vcproj ../build/win32/vs10/cogl.vcxproj ../bu
 ../build/win32/vs9/cogl.vcproj: $(top_srcdir)/build/win32/vs9/cogl.vcprojin
 	for F in `echo $(cogl_sources_c) $(BUILT_SOURCES) | tr '/' '\\'`; do \
 		case $$F in \
-		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*-stub.c|*.h) ;; \
+		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*.h) ;; \
 		*.c)	echo '   <File RelativePath="..\..\..\cogl\'$$F'" />' \
 			;; \
 		esac; \
@@ -409,7 +409,7 @@ dist-hook: ../build/win32/vs9/cogl.vcproj ../build/win32/vs10/cogl.vcxproj ../bu
 ../build/win32/vs10/cogl.vcxproj: $(top_srcdir)/build/win32/vs10/cogl.vcxprojin
 	for F in `echo $(cogl_sources_c) $(BUILT_SOURCES) | tr '/' '\\'`; do \
 		case $$F in \
-		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*-stub.c|*.h) ;; \
+		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*.h) ;; \
 		*.c)	echo '    <ClCompile Include="..\..\..\cogl\'$$F'" />' \
 			;; \
 		esac; \
@@ -420,7 +420,7 @@ dist-hook: ../build/win32/vs9/cogl.vcproj ../build/win32/vs10/cogl.vcxproj ../bu
 ../build/win32/vs10/cogl.vcxproj.filters: $(top_srcdir)/build/win32/vs10/cogl.vcxproj.filtersin
 	for F in `echo $(cogl_sources_c) $(BUILT_SOURCES) | tr '/' '\\'`; do \
 		case $$F in \
-		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*-stub.c|*.h) ;; \
+		*-egl.c|*-glx.c|*-xlib*.c|*-x11.c|*.wgl.c|*-gl.c|*-gles.c|*.h) ;; \
 		*.c)	echo '    <ClCompile Include="..\..\..\cogl\'$$F'"><Filter>Sources</Filter></ClCompile>' \
 			;; \
 		esac; \
diff --git a/cogl/winsys/cogl-winsys-stub.c b/cogl/winsys/cogl-winsys-stub.c
index d121c6a..42cf580 100644
--- a/cogl/winsys/cogl-winsys-stub.c
+++ b/cogl/winsys/cogl-winsys-stub.c
@@ -146,29 +146,37 @@ _cogl_winsys_onscreen_set_visibility (CoglOnscreen *onscreen,
 {
 }
 
-static CoglWinsysVtable _cogl_winsys_vtable =
-  {
-    .id = COGL_WINSYS_ID_STUB,
-    .name = "STUB",
-    .renderer_get_proc_address = _cogl_winsys_renderer_get_proc_address,
-    .renderer_connect = _cogl_winsys_renderer_connect,
-    .renderer_disconnect = _cogl_winsys_renderer_disconnect,
-    .display_setup = _cogl_winsys_display_setup,
-    .display_destroy = _cogl_winsys_display_destroy,
-    .context_init = _cogl_winsys_context_init,
-    .context_deinit = _cogl_winsys_context_deinit,
-
-    .onscreen_init = _cogl_winsys_onscreen_init,
-    .onscreen_deinit = _cogl_winsys_onscreen_deinit,
-    .onscreen_bind = _cogl_winsys_onscreen_bind,
-    .onscreen_swap_buffers = _cogl_winsys_onscreen_swap_buffers,
-    .onscreen_update_swap_throttled =
-      _cogl_winsys_onscreen_update_swap_throttled,
-    .onscreen_set_visibility = _cogl_winsys_onscreen_set_visibility,
-  };
-
 const CoglWinsysVtable *
 _cogl_winsys_stub_get_vtable (void)
 {
-  return &_cogl_winsys_vtable;
+  static gboolean vtable_inited = FALSE;
+  static CoglWinsysVtable vtable;
+
+  /* It would be nice if we could use C99 struct initializers here
+     like the GLX backend does. However this code is also to be
+     compiled using Visual Studio which (still!) doesn't support them
+     so we initialize it in code instead */
+  if (!vtable_inited)
+  {
+    vtable.id = COGL_WINSYS_ID_STUB;
+    vtable.name = "STUB";
+    vtable.renderer_get_proc_address = _cogl_winsys_renderer_get_proc_address;
+    vtable.renderer_connect = _cogl_winsys_renderer_connect;
+    vtable.renderer_disconnect = _cogl_winsys_renderer_disconnect;
+    vtable.display_setup = _cogl_winsys_display_setup;
+    vtable.display_destroy = _cogl_winsys_display_destroy;
+    vtable.context_init = _cogl_winsys_context_init;
+    vtable.context_deinit = _cogl_winsys_context_deinit;
+    vtable.onscreen_init = _cogl_winsys_onscreen_init;
+    vtable.onscreen_deinit = _cogl_winsys_onscreen_deinit;
+    vtable.onscreen_bind = _cogl_winsys_onscreen_bind;
+    vtable.onscreen_swap_buffers = _cogl_winsys_onscreen_swap_buffers;
+    vtable.onscreen_update_swap_throttled =
+      _cogl_winsys_onscreen_update_swap_throttled;
+    vtable.onscreen_set_visibility = _cogl_winsys_onscreen_set_visibility;
+
+    vtable_inited = TRUE;
+  }
+
+  return &vtable;
 }
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]