From 43edfc940038f9582902d83e798b9985f8790f57 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 21 Oct 2010 11:49:37 +0100 Subject: [PATCH] Clean up clutter-private.h/4 Move the private Backend API to a separate header. This also allows us to finally move the class vtable and instance structure to a separate file and plug the visibility hole that left the Backend class bare for everyone to poke into. --- clutter/Makefile.am | 1 + clutter/clutter-backend-private.h | 99 +++++++++++++++++++++++ clutter/clutter-backend.c | 2 +- clutter/clutter-backend.h | 50 ------------ clutter/clutter-device-manager.c | 1 + clutter/clutter-event.c | 5 +- clutter/clutter-feature.c | 1 + clutter/clutter-main.c | 16 ++-- clutter/clutter-private.h | 37 --------- clutter/clutter-stage.c | 2 +- clutter/clutter-units.c | 5 +- clutter/egl/clutter-backend-egl.h | 3 +- clutter/fruity/clutter-backend-fruity.h | 5 +- clutter/osx/clutter-backend-osx.h | 2 +- clutter/wayland/clutter-backend-wayland.h | 3 +- clutter/win32/clutter-backend-win32.h | 3 +- clutter/x11/clutter-backend-x11.h | 3 +- 17 files changed, 129 insertions(+), 109 deletions(-) create mode 100644 clutter/clutter-backend-private.h diff --git a/clutter/Makefile.am b/clutter/Makefile.am index cca8a38a3..3d26ff497 100644 --- a/clutter/Makefile.am +++ b/clutter/Makefile.am @@ -220,6 +220,7 @@ source_c = \ # private headers; these should not be distributed or introspected source_h_priv = \ $(srcdir)/clutter-actor-meta-private.h \ + $(srcdir)/clutter-backend-private.h \ $(srcdir)/clutter-bezier.h \ $(srcdir)/clutter-debug.h \ $(srcdir)/clutter-device-manager-private.h \ diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h new file mode 100644 index 000000000..1167ff148 --- /dev/null +++ b/clutter/clutter-backend-private.h @@ -0,0 +1,99 @@ +#ifndef __CLUTTER_BACKEND_PRIVATE_H__ +#define __CLUTTER_BACKEND_PRIVATE_H__ + +#include + +#define CLUTTER_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) +#define CLUTTER_IS_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND)) +#define CLUTTER_BACKEND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) + +G_BEGIN_DECLS + +typedef struct _ClutterBackendPrivate ClutterBackendPrivate; +typedef struct _ClutterBackendClass ClutterBackendClass; + +struct _ClutterBackend +{ + /*< private >*/ + GObject parent_instance; + ClutterBackendPrivate *priv; +}; + +struct _ClutterBackendClass +{ + /*< private >*/ + GObjectClass parent_class; + + /* vfuncs */ + gboolean (* pre_parse) (ClutterBackend *backend, + GError **error); + gboolean (* post_parse) (ClutterBackend *backend, + GError **error); + ClutterStageWindow * (* create_stage) (ClutterBackend *backend, + ClutterStage *wrapper, + GError **error); + void (* init_events) (ClutterBackend *backend); + void (* init_features) (ClutterBackend *backend); + void (* add_options) (ClutterBackend *backend, + GOptionGroup *group); + ClutterFeatureFlags (* get_features) (ClutterBackend *backend); + void (* redraw) (ClutterBackend *backend, + ClutterStage *stage); + gboolean (* create_context) (ClutterBackend *backend, + GError **error); + void (* ensure_context) (ClutterBackend *backend, + ClutterStage *stage); + ClutterDeviceManager *(* get_device_manager) (ClutterBackend *backend); + + void (* copy_event_data) (ClutterBackend *backend, + const ClutterEvent *src, + ClutterEvent *dest); + void (* free_event_data) (ClutterBackend *backend, + ClutterEvent *event); + + /* signals */ + void (* resolution_changed) (ClutterBackend *backend); + void (* font_changed) (ClutterBackend *backend); + void (* settings_changed) (ClutterBackend *backend); +}; + +/* vfuncs implemented by backend */ +GType _clutter_backend_impl_get_type (void); + +void _clutter_backend_redraw (ClutterBackend *backend, + ClutterStage *stage); +ClutterStageWindow *_clutter_backend_create_stage (ClutterBackend *backend, + ClutterStage *wrapper, + GError **error); +void _clutter_backend_ensure_context (ClutterBackend *backend, + ClutterStage *stage); +void _clutter_backend_ensure_context_internal + (ClutterBackend *backend, + ClutterStage *stage); +gboolean _clutter_backend_create_context (ClutterBackend *backend, + GError **error); + +void _clutter_backend_add_options (ClutterBackend *backend, + GOptionGroup *group); +gboolean _clutter_backend_pre_parse (ClutterBackend *backend, + GError **error); +gboolean _clutter_backend_post_parse (ClutterBackend *backend, + GError **error); +void _clutter_backend_init_events (ClutterBackend *backend); + +void _clutter_backend_copy_event_data (ClutterBackend *backend, + const ClutterEvent *src, + ClutterEvent *dest); +void _clutter_backend_free_event_data (ClutterBackend *backend, + ClutterEvent *event); + +ClutterFeatureFlags _clutter_backend_get_features (ClutterBackend *backend); + +gfloat _clutter_backend_get_units_per_em (ClutterBackend *backend, + PangoFontDescription *font_desc); + +gint32 _clutter_backend_get_units_serial (ClutterBackend *backend); + +G_END_DECLS + +#endif /* __CLUTTER_BACKEND_PRIVATE_H__ */ diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index ff6635cf1..ff4c9738f 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -42,7 +42,7 @@ #include "config.h" #endif -#include "clutter-backend.h" +#include "clutter-backend-private.h" #include "clutter-debug.h" #include "clutter-fixed.h" #include "clutter-marshal.h" diff --git a/clutter/clutter-backend.h b/clutter/clutter-backend.h index 1596d44c6..9b74f0967 100644 --- a/clutter/clutter-backend.h +++ b/clutter/clutter-backend.h @@ -44,58 +44,8 @@ G_BEGIN_DECLS #define CLUTTER_TYPE_BACKEND (clutter_backend_get_type ()) #define CLUTTER_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BACKEND, ClutterBackend)) #define CLUTTER_IS_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BACKEND)) -#define CLUTTER_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) -#define CLUTTER_IS_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND)) -#define CLUTTER_BACKEND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND, ClutterBackendClass)) typedef struct _ClutterBackend ClutterBackend; -typedef struct _ClutterBackendPrivate ClutterBackendPrivate; -typedef struct _ClutterBackendClass ClutterBackendClass; - -struct _ClutterBackend -{ - /*< private >*/ - GObject parent_instance; - ClutterBackendPrivate *priv; -}; - -struct _ClutterBackendClass -{ - /*< private >*/ - GObjectClass parent_class; - - /* vfuncs */ - gboolean (* pre_parse) (ClutterBackend *backend, - GError **error); - gboolean (* post_parse) (ClutterBackend *backend, - GError **error); - ClutterStageWindow * (* create_stage) (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error); - void (* init_events) (ClutterBackend *backend); - void (* init_features) (ClutterBackend *backend); - void (* add_options) (ClutterBackend *backend, - GOptionGroup *group); - ClutterFeatureFlags (* get_features) (ClutterBackend *backend); - void (* redraw) (ClutterBackend *backend, - ClutterStage *stage); - gboolean (* create_context) (ClutterBackend *backend, - GError **error); - void (* ensure_context) (ClutterBackend *backend, - ClutterStage *stage); - ClutterDeviceManager *(* get_device_manager) (ClutterBackend *backend); - - void (* copy_event_data) (ClutterBackend *backend, - const ClutterEvent *src, - ClutterEvent *dest); - void (* free_event_data) (ClutterBackend *backend, - ClutterEvent *event); - - /* signals */ - void (* resolution_changed) (ClutterBackend *backend); - void (* font_changed) (ClutterBackend *backend); - void (* settings_changed) (ClutterBackend *backend); -}; GType clutter_backend_get_type (void) G_GNUC_CONST; diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c index 563bf0d3a..ccb911d87 100644 --- a/clutter/clutter-device-manager.c +++ b/clutter/clutter-device-manager.c @@ -40,6 +40,7 @@ #include "config.h" #endif +#include "clutter-backend-private.h" #include "clutter-debug.h" #include "clutter-device-manager-private.h" #include "clutter-enum-types.h" diff --git a/clutter/clutter-event.c b/clutter/clutter-event.c index 521e3c73f..12e5825ff 100644 --- a/clutter/clutter-event.c +++ b/clutter/clutter-event.c @@ -27,11 +27,12 @@ #include "config.h" #endif +#include "clutter-backend-private.h" +#include "clutter-debug.h" +#include "clutter-event.h" #include "clutter-keysyms.h" #include "clutter-keysyms-table.h" -#include "clutter-event.h" #include "clutter-private.h" -#include "clutter-debug.h" /** * SECTION:clutter-event diff --git a/clutter/clutter-feature.c b/clutter/clutter-feature.c index 282783e2e..b70f7ca92 100644 --- a/clutter/clutter-feature.c +++ b/clutter/clutter-feature.c @@ -45,6 +45,7 @@ #include #include +#include "clutter-backend-private.h" #include "clutter-feature.h" #include "clutter-main.h" #include "clutter-private.h" diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 4b4d8bbaf..e1dbdf13d 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -98,19 +98,19 @@ #include #endif +#include "clutter-actor.h" +#include "clutter-backend-private.h" +#include "clutter-debug.h" +#include "clutter-device-manager-private.h" #include "clutter-event.h" -#include "clutter-backend.h" +#include "clutter-feature.h" +#include "clutter-frame-source.h" #include "clutter-main.h" #include "clutter-master-clock.h" -#include "clutter-feature.h" -#include "clutter-actor.h" -#include "clutter-stage-private.h" #include "clutter-private.h" -#include "clutter-debug.h" -#include "clutter-version.h" /* For flavour define */ -#include "clutter-frame-source.h" #include "clutter-profile.h" -#include "clutter-device-manager-private.h" +#include "clutter-stage-private.h" +#include "clutter-version.h" /* For flavour define */ #include "cogl/cogl.h" #include "pango/cogl-pango.h" diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h index c3b5bd101..892fc639a 100644 --- a/clutter/clutter-private.h +++ b/clutter/clutter-private.h @@ -298,41 +298,6 @@ PangoContext *_clutter_context_get_pango_context (ClutterMainContext *self); G_CONST_RETURN gchar *_clutter_gettext (const gchar *str); -/* vfuncs implemented by backend */ -GType _clutter_backend_impl_get_type (void); - -void _clutter_backend_redraw (ClutterBackend *backend, - ClutterStage *stage); -ClutterStageWindow *_clutter_backend_create_stage (ClutterBackend *backend, - ClutterStage *wrapper, - GError **error); -void _clutter_backend_ensure_context (ClutterBackend *backend, - ClutterStage *stage); -void _clutter_backend_ensure_context_internal - (ClutterBackend *backend, - ClutterStage *stage); -gboolean _clutter_backend_create_context (ClutterBackend *backend, - GError **error); - -void _clutter_backend_add_options (ClutterBackend *backend, - GOptionGroup *group); -gboolean _clutter_backend_pre_parse (ClutterBackend *backend, - GError **error); -gboolean _clutter_backend_post_parse (ClutterBackend *backend, - GError **error); -void _clutter_backend_init_events (ClutterBackend *backend); - -void _clutter_backend_copy_event_data (ClutterBackend *backend, - const ClutterEvent *src, - ClutterEvent *dest); -void _clutter_backend_free_event_data (ClutterBackend *backend, - ClutterEvent *event); - -ClutterFeatureFlags _clutter_backend_get_features (ClutterBackend *backend); - -gfloat _clutter_backend_get_units_per_em (ClutterBackend *backend, - PangoFontDescription *font_desc); - gboolean _clutter_feature_init (GError **error); /* Reinjecting queued events for processing */ @@ -403,8 +368,6 @@ void _clutter_actor_finish_queue_redraw (ClutterActor *self, void _clutter_run_repaint_functions (void); -gint32 _clutter_backend_get_units_serial (ClutterBackend *backend); - gboolean _clutter_effect_pre_paint (ClutterEffect *effect); void _clutter_effect_post_paint (ClutterEffect *effect); gboolean _clutter_effect_get_paint_volume (ClutterEffect *effect, diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index d62da3846..14b3ae793 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -55,7 +55,7 @@ #include "clutter-stage.h" -#include "clutter-backend.h" +#include "clutter-backend-private.h" #include "clutter-main.h" #include "clutter-color.h" #include "clutter-util.h" diff --git a/clutter/clutter-units.c b/clutter/clutter-units.c index 8631232b7..0129d8da0 100644 --- a/clutter/clutter-units.c +++ b/clutter/clutter-units.c @@ -69,9 +69,10 @@ #include #include -#include "clutter-units.h" -#include "clutter-private.h" +#include "clutter-backend-private.h" #include "clutter-interval.h" +#include "clutter-private.h" +#include "clutter-units.h" #define DPI_FALLBACK (96.0) diff --git a/clutter/egl/clutter-backend-egl.h b/clutter/egl/clutter-backend-egl.h index 746d04c74..6f6181aab 100644 --- a/clutter/egl/clutter-backend-egl.h +++ b/clutter/egl/clutter-backend-egl.h @@ -27,12 +27,13 @@ #include #include -#include #ifdef COGL_HAS_XLIB_SUPPORT #include #include #endif +#include "clutter-backend-private.h" + #include "clutter-egl-headers.h" #ifdef COGL_HAS_X11_SUPPORT diff --git a/clutter/fruity/clutter-backend-fruity.h b/clutter/fruity/clutter-backend-fruity.h index c3d331128..6fd7ddebc 100644 --- a/clutter/fruity/clutter-backend-fruity.h +++ b/clutter/fruity/clutter-backend-fruity.h @@ -32,8 +32,9 @@ #include #include -#include -#include + +#include "clutter-backend-private.h" + G_BEGIN_DECLS #define CLUTTER_TYPE_BACKEND_FRUITY (clutter_backend_egl_get_type ()) diff --git a/clutter/osx/clutter-backend-osx.h b/clutter/osx/clutter-backend-osx.h index 599c9592d..339bcb8af 100644 --- a/clutter/osx/clutter-backend-osx.h +++ b/clutter/osx/clutter-backend-osx.h @@ -22,7 +22,7 @@ #ifndef __CLUTTER_BACKEND_OSX_H__ #define __CLUTTER_BACKEND_OSX_H__ -#include +#include "clutter-backend-private.h" @class NSOpenGLPixelFormat, NSOpenGLContext; diff --git a/clutter/wayland/clutter-backend-wayland.h b/clutter/wayland/clutter-backend-wayland.h index 54a8d5260..d243cee9c 100644 --- a/clutter/wayland/clutter-backend-wayland.h +++ b/clutter/wayland/clutter-backend-wayland.h @@ -29,13 +29,14 @@ #include #include -#include #include #include #include "clutter-wayland.h" +#include "clutter-backend-private.h" + G_BEGIN_DECLS #define CLUTTER_TYPE_BACKEND_WAYLAND (_clutter_backend_wayland_get_type ()) diff --git a/clutter/win32/clutter-backend-win32.h b/clutter/win32/clutter-backend-win32.h index 5a6c40dbc..9285ef277 100644 --- a/clutter/win32/clutter-backend-win32.h +++ b/clutter/win32/clutter-backend-win32.h @@ -24,9 +24,10 @@ #include #include -#include #include +#include "clutter-backend-private.h" + #include "clutter-win32.h" G_BEGIN_DECLS diff --git a/clutter/x11/clutter-backend-x11.h b/clutter/x11/clutter-backend-x11.h index e51cc135f..1947803a7 100644 --- a/clutter/x11/clutter-backend-x11.h +++ b/clutter/x11/clutter-backend-x11.h @@ -24,12 +24,11 @@ #include #include -#include #include #include #include "clutter-x11.h" - +#include "clutter-backend-private.h" #include "clutter-keymap-x11.h" #include "xsettings/xsettings-client.h"