[cogl] Remove inclusion of Xlib headers in Cogl headers



commit d8c47e25f2af58ee3be6d4df9d96b1729b8f590c
Author: Zan Dobersek <zandobersek gmail com>
Date:   Mon Oct 17 18:55:35 2011 +0200

    Remove inclusion of Xlib headers in Cogl headers
    
    Xlib headers define many trivially named objects which can later cause
    name collision problems when only cogl.h header is included in a program
    or library. Xlib headers are now only included through including the
    standalone header cogl-xlib.h.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=661174
    
    Reviewed-by: Robert Bragg <robert linux intel com>

 cogl/Makefile.am                      |    1 +
 cogl/cogl-clutter-xlib.h              |   41 +++++++++++++++++++++++++++++++++
 cogl/cogl-clutter.c                   |    3 ++
 cogl/cogl-clutter.h                   |   10 --------
 cogl/cogl-renderer.c                  |    1 +
 cogl/cogl-types.h                     |    3 --
 cogl/cogl-xlib-renderer.c             |    2 +-
 cogl/cogl-xlib-renderer.h             |    7 ++---
 cogl/cogl-xlib.c                      |    3 +-
 cogl/cogl-xlib.h                      |   14 ++++++-----
 cogl/cogl.h                           |    4 ---
 cogl/winsys/cogl-texture-pixmap-x11.c |    1 +
 cogl/winsys/cogl-winsys-egl.c         |    1 +
 cogl/winsys/cogl-winsys-glx.c         |    1 +
 examples/cogl-x11-foreign.c           |    1 +
 examples/cogl-x11-tfp.c               |    1 +
 16 files changed, 65 insertions(+), 29 deletions(-)
---
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index fe6f472..995264e 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -330,6 +330,7 @@ cogl_sources_c = \
 
 if SUPPORT_XLIB
 cogl_public_h += \
+	$(srcdir)/cogl-clutter-xlib.h \
 	$(srcdir)/cogl-xlib-renderer.h
 
 cogl_experimental_h += \
diff --git a/cogl/cogl-clutter-xlib.h b/cogl/cogl-clutter-xlib.h
new file mode 100644
index 0000000..766ceba
--- /dev/null
+++ b/cogl/cogl-clutter-xlib.h
@@ -0,0 +1,41 @@
+/*
+ * Cogl
+ *
+ * An object oriented GL/GLES Abstraction/Utility Layer
+ *
+ * Copyright (C) 2011 Intel Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(__COGL_XLIB_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
+#error "Only <cogl/cogl-xlib.h> can be included directly."
+#endif
+
+#ifndef __COGL_CLUTTER_XLIB_H__
+#define __COGL_CLUTTER_XLIB_H__
+
+#include <X11/Xutil.h>
+
+G_BEGIN_DECLS
+
+#define cogl_clutter_winsys_xlib_get_visual_info cogl_clutter_winsys_xlib_get_visual_info_CLUTTER
+XVisualInfo *
+cogl_clutter_winsys_xlib_get_visual_info (void);
+
+G_END_DECLS
+
+#endif /* __COGL_CLUTTER_XLIB_H__ */
diff --git a/cogl/cogl-clutter.c b/cogl/cogl-clutter.c
index f9f6321..2268c04 100644
--- a/cogl/cogl-clutter.c
+++ b/cogl/cogl-clutter.c
@@ -39,6 +39,9 @@
 #include "cogl-winsys-stub-private.h"
 #include "cogl-framebuffer-private.h"
 #include "cogl-onscreen-private.h"
+#ifdef COGL_HAS_XLIB_SUPPORT
+#include "cogl-clutter-xlib.h"
+#endif
 
 gboolean
 cogl_clutter_check_extension (const char *name, const char *ext)
diff --git a/cogl/cogl-clutter.h b/cogl/cogl-clutter.h
index a121671..3125db8 100644
--- a/cogl/cogl-clutter.h
+++ b/cogl/cogl-clutter.h
@@ -28,10 +28,6 @@
 #ifndef __COGL_CLUTTER_H__
 #define __COGL_CLUTTER_H__
 
-#ifdef COGL_HAS_XLIB
-#include <X11/Xutil.h>
-#endif
-
 G_BEGIN_DECLS
 
 #define cogl_clutter_check_extension cogl_clutter_check_extension_CLUTTER
@@ -46,12 +42,6 @@ cogl_clutter_winsys_has_feature (CoglWinsysFeature feature);
 void
 cogl_onscreen_clutter_backend_set_size (int width, int height);
 
-#ifdef COGL_HAS_XLIB
-#define cogl_clutter_winsys_xlib_get_visual_info cogl_clutter_winsys_xlib_get_visual_info_CLUTTER
-XVisualInfo *
-cogl_clutter_winsys_xlib_get_visual_info (void);
-#endif
-
 G_END_DECLS
 
 #endif /* __COGL_CLUTTER_H__ */
diff --git a/cogl/cogl-renderer.c b/cogl/cogl-renderer.c
index 5cc6ed9..54b8599 100644
--- a/cogl/cogl-renderer.c
+++ b/cogl/cogl-renderer.c
@@ -45,6 +45,7 @@
 #include "cogl-winsys-stub-private.h"
 #include "cogl-winsys-egl-private.h"
 #include "cogl-config-private.h"
+#include "cogl-xlib-renderer.h"
 
 #ifdef COGL_HAS_GLX_SUPPORT
 extern const CoglWinsysVtable *_cogl_winsys_glx_get_vtable (void);
diff --git a/cogl/cogl-types.h b/cogl/cogl-types.h
index 1ec6e57..c93bde8 100644
--- a/cogl/cogl-types.h
+++ b/cogl/cogl-types.h
@@ -31,9 +31,6 @@
 #include <glib-object.h>
 
 #include <cogl/cogl-defines.h>
-#ifdef COGL_HAS_XLIB
-#include <X11/Xlib.h>
-#endif
 
 G_BEGIN_DECLS
 
diff --git a/cogl/cogl-xlib-renderer.c b/cogl/cogl-xlib-renderer.c
index 40d596a..2c55713 100644
--- a/cogl/cogl-xlib-renderer.c
+++ b/cogl/cogl-xlib-renderer.c
@@ -28,7 +28,7 @@
 #include "config.h"
 #endif
 
-#include "cogl.h"
+#include "cogl-xlib-renderer.h"
 #include "cogl-util.h"
 #include "cogl-internal.h"
 #include "cogl-object.h"
diff --git a/cogl/cogl-xlib-renderer.h b/cogl/cogl-xlib-renderer.h
index 64e0641..0afd568 100644
--- a/cogl/cogl-xlib-renderer.h
+++ b/cogl/cogl-xlib-renderer.h
@@ -21,15 +21,14 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#if !defined(__COGL_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
-#error "Only <cogl/cogl.h> can be included directly."
+#if !defined(__COGL_XLIB_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
+#error "Only <cogl/cogl-xlib.h> can be included directly."
 #endif
 
 #ifndef __COGL_XLIB_RENDERER_H__
 #define __COGL_XLIB_RENDERER_H__
 
-#include <cogl/cogl-types.h>
-#include <cogl/cogl-renderer.h>
+#include <cogl/cogl.h>
 
 #include <X11/Xlib.h>
 
diff --git a/cogl/cogl-xlib.c b/cogl/cogl-xlib.c
index 866cc3f..2c96872 100644
--- a/cogl/cogl-xlib.c
+++ b/cogl/cogl-xlib.c
@@ -29,7 +29,8 @@
 #include "config.h"
 #endif
 
-#include <cogl.h>
+#include <cogl-xlib.h>
+
 #include <cogl-internal.h>
 #include <cogl-handle.h>
 #include <cogl-context-private.h>
diff --git a/cogl/cogl-xlib.h b/cogl/cogl-xlib.h
index d088dc9..9e956f7 100644
--- a/cogl/cogl-xlib.h
+++ b/cogl/cogl-xlib.h
@@ -21,17 +21,17 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#if !defined(__COGL_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
-#error "Only <cogl/cogl.h> can be included directly."
-#endif
-
 #ifndef __COGL_XLIB_H__
 #define __COGL_XLIB_H__
 
-#include <cogl/cogl-types.h>
-
 #include <X11/Xlib.h>
 
+#define __COGL_XLIB_H_INSIDE__
+
+#include <cogl/cogl.h>
+#include <cogl/cogl-clutter-xlib.h>
+#include <cogl/cogl-xlib-renderer.h>
+
 G_BEGIN_DECLS
 
 /*
@@ -81,4 +81,6 @@ cogl_xlib_set_display (Display *display);
 CoglFilterReturn
 cogl_xlib_handle_event (XEvent *xevent);
 
+#undef __COGL_XLIB_H_INSIDE__
+
 #endif /* __COGL_XLIB_H__ */
diff --git a/cogl/cogl.h b/cogl/cogl.h
index 2ca3967..0630a27 100644
--- a/cogl/cogl.h
+++ b/cogl/cogl.h
@@ -96,10 +96,6 @@ typedef struct _CoglFramebuffer CoglFramebuffer;
 #include <cogl/cogl-pipeline-layer-state.h>
 #include <cogl/cogl-framebuffer.h>
 #include <cogl/cogl-onscreen.h>
-#ifdef COGL_HAS_XLIB
-#include <cogl/cogl-xlib.h>
-#include <cogl/cogl-xlib-renderer.h>
-#endif
 #if defined (COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT)
 #include <cogl/cogl-wayland-renderer.h>
 #endif
diff --git a/cogl/winsys/cogl-texture-pixmap-x11.c b/cogl/winsys/cogl-texture-pixmap-x11.c
index caacc90..cb4a56d 100644
--- a/cogl/winsys/cogl-texture-pixmap-x11.c
+++ b/cogl/winsys/cogl-texture-pixmap-x11.c
@@ -47,6 +47,7 @@
 #include "cogl-handle.h"
 #include "cogl-winsys-private.h"
 #include "cogl-pipeline-opengl-private.h"
+#include "cogl-xlib.h"
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
diff --git a/cogl/winsys/cogl-winsys-egl.c b/cogl/winsys/cogl-winsys-egl.c
index 5cb37fc..ad30854 100644
--- a/cogl/winsys/cogl-winsys-egl.c
+++ b/cogl/winsys/cogl-winsys-egl.c
@@ -43,6 +43,7 @@
 #ifdef COGL_HAS_EGL_PLATFORM_POWERVR_X11_SUPPORT
 #include "cogl-xlib-renderer-private.h"
 #include "cogl-xlib-display-private.h"
+#include "cogl-xlib-renderer.h"
 #endif
 
 #ifdef COGL_HAS_XLIB_SUPPORT
diff --git a/cogl/winsys/cogl-winsys-glx.c b/cogl/winsys/cogl-winsys-glx.c
index cd67b00..f1a2f68 100644
--- a/cogl/winsys/cogl-winsys-glx.c
+++ b/cogl/winsys/cogl-winsys-glx.c
@@ -48,6 +48,7 @@
 #include "cogl-framebuffer-private.h"
 #include "cogl-onscreen-private.h"
 #include "cogl-swap-chain-private.h"
+#include "cogl-xlib-renderer.h"
 
 #include <stdlib.h>
 #include <sys/types.h>
diff --git a/examples/cogl-x11-foreign.c b/examples/cogl-x11-foreign.c
index c101ada..6c9ac40 100644
--- a/examples/cogl-x11-foreign.c
+++ b/examples/cogl-x11-foreign.c
@@ -1,4 +1,5 @@
 #include <cogl/cogl.h>
+#include <cogl/cogl-xlib.h>
 #include <glib.h>
 #include <stdio.h>
 
diff --git a/examples/cogl-x11-tfp.c b/examples/cogl-x11-tfp.c
index b7d1f2e..b045118 100644
--- a/examples/cogl-x11-tfp.c
+++ b/examples/cogl-x11-tfp.c
@@ -1,4 +1,5 @@
 #include <cogl/cogl.h>
+#include <cogl/cogl-xlib.h>
 #include <cogl/winsys/cogl-texture-pixmap-x11.h>
 #include <glib.h>
 #include <stdio.h>



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