[cogl] Remove inclusion of Xlib headers in Cogl headers
- From: Robert Bragg <rbragg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl] Remove inclusion of Xlib headers in Cogl headers
- Date: Tue, 1 Nov 2011 15:57:08 +0000 (UTC)
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]