[cheese] Add private pointers to libcheese GObject structs



commit 0f6eee0ae62371b93899ea8d10d309dcf9b63029
Author: David King <amigadave amigadave com>
Date:   Sat Oct 29 22:44:22 2011 +0200

    Add private pointers to libcheese GObject structs
    
    Speed up access to the private struct of the GObject by adding a
    pointer, so that *_GET_PRIVATE does not have to called each time. Create
    a typedef for the private structures in the headers, and hide the
    structs from the documentation by placing them inside a private
    subsection.

 docs/reference/cheese-sections.txt       |   28 +++++++++---
 libcheese/cheese-avatar-chooser.c        |    8 ++--
 libcheese/cheese-avatar-chooser.h        |    2 +
 libcheese/cheese-camera-device-monitor.c |   28 ++++-------
 libcheese/cheese-camera-device-monitor.h |    4 +-
 libcheese/cheese-camera-device.c         |   65 +++++++-------------------
 libcheese/cheese-camera-device.h         |    2 +
 libcheese/cheese-camera.c                |   72 +++++++++++++++---------------
 libcheese/cheese-camera.h                |    2 +
 libcheese/cheese-effect.c                |   19 +++-----
 libcheese/cheese-effect.h                |    4 +-
 libcheese/cheese-fileutil.c              |   20 +++-----
 libcheese/cheese-fileutil.h              |    2 +
 libcheese/cheese-flash.c                 |   16 +++---
 libcheese/cheese-flash.h                 |    2 +
 15 files changed, 128 insertions(+), 146 deletions(-)
---
diff --git a/docs/reference/cheese-sections.txt b/docs/reference/cheese-sections.txt
index 8537670..780191d 100644
--- a/docs/reference/cheese-sections.txt
+++ b/docs/reference/cheese-sections.txt
@@ -1,10 +1,12 @@
 <SECTION>
 <FILE>cheese-avatar-chooser</FILE>
 <TITLE>CheeseAvatarChooser</TITLE>
-CheeseAvatarChooserClass
 CheeseAvatarChooser
 cheese_avatar_chooser_new
 cheese_avatar_chooser_get_picture
+<SUBSECTION Private>
+CheeseAvatarChooserPrivate
+CheeseAvatarChooserClass
 <SUBSECTION Standard>
 CHEESE_AVATAR_CHOOSER
 CHEESE_IS_AVATAR_CHOOSER
@@ -41,6 +43,8 @@ cheese_camera_take_photo_pixbuf
 cheese_camera_toggle_effects_pipeline
 CheeseCameraError
 cheese_camera_setup
+<SUBSECTION Private>
+CheeseCameraPrivate
 <SUBSECTION Standard>
 CHEESE_CAMERA
 CHEESE_IS_CAMERA
@@ -54,7 +58,6 @@ CHEESE_CAMERA_GET_CLASS
 <SECTION>
 <FILE>cheese-camera-device</FILE>
 <TITLE>CheeseCameraDevice</TITLE>
-CheeseCameraDeviceClass
 CheeseCameraDevice
 CheeseVideoFormat
 cheese_camera_device_new
@@ -65,6 +68,9 @@ cheese_camera_device_get_best_format
 cheese_camera_device_get_caps_for_format
 cheese_camera_device_get_format_list
 cheese_camera_device_get_src
+<SUBSECTION Private>
+CheeseCameraDevicePrivate
+CheeseCameraDeviceClass
 <SUBSECTION Standard>
 CHEESE_CAMERA_DEVICE
 CHEESE_IS_CAMERA_DEVICE
@@ -84,6 +90,8 @@ CheeseCameraDeviceMonitorClass
 CheeseCameraDeviceMonitor
 cheese_camera_device_monitor_new
 cheese_camera_device_monitor_coldplug
+<SUBSECTION Private>
+CheeseCameraDeviceMonitorPrivate
 <SUBSECTION Standard>
 CHEESE_CAMERA_DEVICE_MONITOR
 CHEESE_IS_CAMERA_DEVICE_MONITOR
@@ -97,7 +105,6 @@ CHEESE_CAMERA_DEVICE_MONITOR_GET_CLASS
 <SECTION>
 <FILE>cheese-effect</FILE>
 <TITLE>CheeseEffect</TITLE>
-CheeseEffectClass
 CheeseEffect
 cheese_effect_new
 cheese_effect_enable_preview
@@ -105,6 +112,9 @@ cheese_effect_disable_preview
 cheese_effect_is_preview_connected
 cheese_effect_load_effects
 cheese_effect_load_from_file
+<SUBSECTION Private>
+CheeseEffectPrivate
+CheeseEffectClass
 <SUBSECTION Standard>
 CHEESE_EFFECT
 CHEESE_IS_EFFECT
@@ -118,7 +128,6 @@ CHEESE_EFFECT_GET_CLASS
 <SECTION>
 <FILE>cheese-file-util</FILE>
 <TITLE>CheeseFileUtil</TITLE>
-CheeseFileUtilClass
 CheeseFileUtil
 cheese_fileutil_new
 CHEESE_PHOTO_NAME_SUFFIX
@@ -128,6 +137,9 @@ cheese_fileutil_get_new_media_filename
 cheese_fileutil_get_photo_path
 cheese_fileutil_get_video_path
 cheese_fileutil_reset_burst
+<SUBSECTION Private>
+CheeseFileUtilPrivate
+CheeseFileUtilClass
 <SUBSECTION Standard>
 CHEESE_FILEUTIL
 CHEESE_IS_FILEUTIL
@@ -141,10 +153,12 @@ CHEESE_FILEUTIL_GET_CLASS
 <SECTION>
 <FILE>cheese-flash</FILE>
 <TITLE>CheeseFlash</TITLE>
-CheeseFlashClass
 CheeseFlash
 cheese_flash_new
 cheese_flash_fire
+<SUBSECTION Private>
+CheeseFlashPrivate
+CheeseFlashClass
 <SUBSECTION Standard>
 CHEESE_FLASH
 CHEESE_IS_FLASH
@@ -158,11 +172,13 @@ CHEESE_FLASH_GET_CLASS
 <SECTION>
 <FILE>cheese-widget</FILE>
 <TITLE>CheeseWidget</TITLE>
-CheeseWidgetClass
 CheeseWidget
 cheese_widget_new
 cheese_widget_get_error
 CheeseWidgetState
+<SUBSECTION Private>
+CheeseWidgetPrivate
+CheeseWidgetClass
 <SUBSECTION Standard>
 CHEESE_WIDGET
 CHEESE_IS_WIDGET
diff --git a/libcheese/cheese-avatar-chooser.c b/libcheese/cheese-avatar-chooser.c
index 38366d0..ef655ec 100644
--- a/libcheese/cheese-avatar-chooser.c
+++ b/libcheese/cheese-avatar-chooser.c
@@ -55,7 +55,7 @@ enum
   IMAGE_PAGE  = 1,
 };
 
-typedef struct
+struct _CheeseAvatarChooserPrivate
 {
   GtkWidget *notebook;
   GtkWidget *camera;
@@ -64,7 +64,7 @@ typedef struct
   GtkWidget *take_again_button;
   CheeseFlash *flash;
   gulong photo_taken_id;
-} CheeseAvatarChooserPrivate;
+};
 
 #define CHEESE_AVATAR_CHOOSER_GET_PRIVATE(o)                     \
   (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHEESE_TYPE_AVATAR_CHOOSER, \
@@ -209,7 +209,7 @@ cheese_avatar_chooser_init (CheeseAvatarChooser *chooser)
 {
   GtkWidget *frame;
 
-  CheeseAvatarChooserPrivate *priv = CHEESE_AVATAR_CHOOSER_GET_PRIVATE (chooser);
+  CheeseAvatarChooserPrivate *priv = chooser->priv = CHEESE_AVATAR_CHOOSER_GET_PRIVATE (chooser);
 
   priv->flash = cheese_flash_new (GTK_WIDGET (chooser));
 
@@ -266,7 +266,7 @@ cheese_avatar_chooser_init (CheeseAvatarChooser *chooser)
 static void
 cheese_avatar_chooser_finalize (GObject *object)
 {
-  CheeseAvatarChooserPrivate *priv = CHEESE_AVATAR_CHOOSER_GET_PRIVATE (object);
+  CheeseAvatarChooserPrivate *priv = CHEESE_AVATAR_CHOOSER (object)->priv;
 
   if (priv->flash != NULL)
   {
diff --git a/libcheese/cheese-avatar-chooser.h b/libcheese/cheese-avatar-chooser.h
index 38e912d..190b0f3 100644
--- a/libcheese/cheese-avatar-chooser.h
+++ b/libcheese/cheese-avatar-chooser.h
@@ -35,6 +35,7 @@ G_BEGIN_DECLS
 #define CHEESE_AVATAR_CHOOSER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CHEESE_TYPE_AVATAR_CHOOSER, \
                                                                           CheeseAvatarChooserClass))
 
+typedef struct _CheeseAvatarChooserPrivate CheeseAvatarChooserPrivate;
 typedef struct _CheeseAvatarChooserClass CheeseAvatarChooserClass;
 typedef struct _CheeseAvatarChooser CheeseAvatarChooser;
 
@@ -58,6 +59,7 @@ struct _CheeseAvatarChooser
 {
   /*< private >*/
   GtkDialog parent_instance;
+  CheeseAvatarChooserPrivate *priv;
 };
 
 GType cheese_avatar_chooser_get_type (void) G_GNUC_CONST;
diff --git a/libcheese/cheese-camera-device-monitor.c b/libcheese/cheese-camera-device-monitor.c
index c25de46..24e991f 100644
--- a/libcheese/cheese-camera-device-monitor.c
+++ b/libcheese/cheese-camera-device-monitor.c
@@ -77,14 +77,14 @@ enum CheeseCameraDeviceMonitorError
   CHEESE_CAMERA_DEVICE_MONITOR_ERROR_ELEMENT_NOT_FOUND
 };
 
-typedef struct
+struct _CheeseCameraDeviceMonitorPrivate
 {
 #ifdef HAVE_UDEV
   GUdevClient *client;
 #else
   guint filler;
 #endif /* HAVE_UDEV */
-} CheeseCameraDeviceMonitorPrivate;
+};
 
 enum
 {
@@ -239,16 +239,15 @@ cheese_camera_device_monitor_uevent_cb (GUdevClient               *client,
 void
 cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
 {
-  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
-  GList                            *devices, *l;
-  gint                              i = 0;
+  GList *devices, *l;
+  gint   i = 0;
 
-  if (priv->client == NULL)
+  if (monitor->priv->client == NULL)
     return;
 
   GST_INFO ("Probing devices with udev...");
 
-  devices = g_udev_client_query_by_subsystem (priv->client, "video4linux");
+  devices = g_udev_client_query_by_subsystem (monitor->priv->client, "video4linux");
 
   /* Initialize camera structures */
   for (l = devices; l != NULL; l = l->next)
@@ -267,7 +266,7 @@ void
 cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
 {
   #if 0
-  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+  CheeseCameraDeviceMonitorPrivate *priv = monitor->priv;
   struct v4l2_capability            v2cap;
   struct video_capability           v1cap;
   int                               fd, ok;
@@ -338,10 +337,7 @@ static void
 cheese_camera_device_monitor_finalize (GObject *object)
 {
 #ifdef HAVE_UDEV
-  CheeseCameraDeviceMonitor *monitor;
-
-  monitor = CHEESE_CAMERA_DEVICE_MONITOR (object);
-  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR (object)->priv;
 
   if (priv->client != NULL)
   {
@@ -401,8 +397,8 @@ static void
 cheese_camera_device_monitor_init (CheeseCameraDeviceMonitor *monitor)
 {
 #ifdef HAVE_UDEV
-  CheeseCameraDeviceMonitorPrivate *priv         = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
-  const gchar *const                subsystems[] = {"video4linux", NULL};
+  CheeseCameraDeviceMonitorPrivate *priv = monitor->priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+  const gchar *const subsystems[] = {"video4linux", NULL};
 
   priv->client = g_udev_client_new (subsystems);
   g_signal_connect (G_OBJECT (priv->client), "uevent",
@@ -422,7 +418,3 @@ cheese_camera_device_monitor_new (void)
 {
   return g_object_new (CHEESE_TYPE_CAMERA_DEVICE_MONITOR, NULL);
 }
-
-/*
- * vim: sw=2 ts=8 cindent noai bs=2
- */
diff --git a/libcheese/cheese-camera-device-monitor.h b/libcheese/cheese-camera-device-monitor.h
index bbec215..a309c82 100644
--- a/libcheese/cheese-camera-device-monitor.h
+++ b/libcheese/cheese-camera-device-monitor.h
@@ -25,7 +25,7 @@
 
 #include <glib-object.h>
 #include <gst/interfaces/xoverlay.h>
-#include "cheese-camera-device.h"
+#include <cheese-camera-device.h>
 
 G_BEGIN_DECLS
 
@@ -39,6 +39,7 @@ G_BEGIN_DECLS
 #define CHEESE_CAMERA_DEVICE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CHEESE_TYPE_CAMERA_DEVICE_MONITOR, \
                                                                               CheeseCameraDeviceMonitorClass))
 
+typedef struct _CheeseCameraDeviceMonitorPrivate CheeseCameraDeviceMonitorPrivate;
 typedef struct _CheeseCameraDeviceMonitorClass CheeseCameraDeviceMonitorClass;
 typedef struct _CheeseCameraDeviceMonitor CheeseCameraDeviceMonitor;
 
@@ -51,6 +52,7 @@ struct _CheeseCameraDeviceMonitor
 {
   /*< private >*/
   GObject parent;
+  CheeseCameraDeviceMonitorPrivate *priv;
 };
 
 /**
diff --git a/libcheese/cheese-camera-device.c b/libcheese/cheese-camera-device.c
index 94e3c83..1630530 100644
--- a/libcheese/cheese-camera-device.c
+++ b/libcheese/cheese-camera-device.c
@@ -82,7 +82,7 @@ enum
   PROP_V4LAPI
 };
 
-typedef struct
+struct _CheeseCameraDevicePrivate
 {
   gchar *device;
   gchar *uuid;
@@ -93,7 +93,7 @@ typedef struct
   GList   *formats;
 
   GError *construct_error;
-} CheeseCameraDevicePrivate;
+};
 
 GQuark cheese_camera_device_error_quark (void);
 
@@ -147,8 +147,6 @@ static
 GstCaps *
 cheese_webcam_device_filter_caps (CheeseCameraDevice *device, const GstCaps *caps, GStrv formats)
 {
-/*  CheeseCameraDevicePrivate *priv =
- *  CHEESE_CAMERA_DEVICE_GET_PRIVATE (device); */
   GstCaps *filter;
   GstCaps *allowed;
   gint     i;
@@ -181,8 +179,7 @@ cheese_webcam_device_filter_caps (CheeseCameraDevice *device, const GstCaps *cap
 static void
 cheese_camera_device_add_format (CheeseCameraDevice *device, CheeseVideoFormat *format)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv =  device->priv;
   GList *l;
 
   for (l = priv->formats; l != NULL; l = l->next)
@@ -201,8 +198,7 @@ cheese_camera_device_add_format (CheeseCameraDevice *device, CheeseVideoFormat *
 static void
 free_format_list (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv = device->priv;
 
   GList *l;
 
@@ -215,8 +211,7 @@ free_format_list (CheeseCameraDevice *device)
 static void
 cheese_webcam_device_update_format_table (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv = device->priv;
 
   int i;
   int num_structures;
@@ -294,8 +289,7 @@ cheese_webcam_device_update_format_table (CheeseCameraDevice *device)
 static void
 cheese_camera_device_get_caps (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv = device->priv;
 
   gchar               *pipeline_desc;
   GstElement          *pipeline;
@@ -384,8 +378,7 @@ static void
 cheese_camera_device_constructed (GObject *object)
 {
   CheeseCameraDevice        *device = CHEESE_CAMERA_DEVICE (object);
-  CheeseCameraDevicePrivate *priv   =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv   = device->priv;
 
   priv->src = (priv->v4lapi == 2) ? "v4l2src" : "v4lsrc";
 
@@ -399,8 +392,7 @@ static void
 cheese_camera_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
   CheeseCameraDevice        *device = CHEESE_CAMERA_DEVICE (object);
-  CheeseCameraDevicePrivate *priv   =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv   = device->priv;
 
   switch (prop_id)
   {
@@ -426,8 +418,7 @@ static void
 cheese_camera_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
   CheeseCameraDevice        *device = CHEESE_CAMERA_DEVICE (object);
-  CheeseCameraDevicePrivate *priv   =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv   = device->priv;
 
   switch (prop_id)
   {
@@ -459,8 +450,7 @@ static void
 cheese_camera_device_finalize (GObject *object)
 {
   CheeseCameraDevice        *device = CHEESE_CAMERA_DEVICE (object);
-  CheeseCameraDevicePrivate *priv   =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv   = device->priv;
 
   g_free (priv->device);
   g_free (priv->uuid);
@@ -548,8 +538,7 @@ cheese_camera_device_initable_iface_init (GInitableIface *iface)
 static void
 cheese_camera_device_init (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv = device->priv = CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
 
   priv->device = NULL;
   priv->uuid   = NULL;
@@ -568,8 +557,7 @@ cheese_camera_device_initable_init (GInitable    *initable,
                                     GError      **error)
 {
   CheeseCameraDevice        *device = CHEESE_CAMERA_DEVICE (initable);
-  CheeseCameraDevicePrivate *priv   =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
+  CheeseCameraDevicePrivate *priv   = device->priv;
 
   g_return_val_if_fail (CHEESE_IS_CAMERA_DEVICE (initable), FALSE);
 
@@ -636,10 +624,7 @@ cheese_camera_device_new (const gchar *device_id,
 GList *
 cheese_camera_device_get_format_list (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
-
-  return g_list_sort (g_list_copy (priv->formats), compare_formats);
+  return g_list_sort (g_list_copy (device->priv->formats), compare_formats);
 }
 
 /**
@@ -651,10 +636,7 @@ cheese_camera_device_get_format_list (CheeseCameraDevice *device)
 const gchar *
 cheese_camera_device_get_name (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
-
-  return priv->name;
+  return device->priv->name;
 }
 
 /**
@@ -666,10 +648,7 @@ cheese_camera_device_get_name (CheeseCameraDevice *device)
 const gchar *
 cheese_camera_device_get_uuid (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
-
-  return priv->uuid;
+  return device->priv->uuid;
 }
 
 /**
@@ -681,10 +660,7 @@ cheese_camera_device_get_uuid (CheeseCameraDevice *device)
 const gchar *
 cheese_camera_device_get_src (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
-
-  return priv->src;
+  return device->priv->src;
 }
 
 /**
@@ -697,10 +673,7 @@ cheese_camera_device_get_src (CheeseCameraDevice *device)
 const gchar *
 cheese_camera_device_get_device_file (CheeseCameraDevice *device)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
-
-  return priv->device;
+  return device->priv->device;
 }
 
 /**
@@ -732,8 +705,6 @@ GstCaps *
 cheese_camera_device_get_caps_for_format (CheeseCameraDevice *device,
                                           CheeseVideoFormat  *format)
 {
-  CheeseCameraDevicePrivate *priv =
-    CHEESE_CAMERA_DEVICE_GET_PRIVATE (device);
   GstCaps *desired_caps;
   GstCaps *subset_caps;
   gint     i;
@@ -758,7 +729,7 @@ cheese_camera_device_get_caps_for_format (CheeseCameraDevice *device,
                                           NULL));
   }
 
-  subset_caps = gst_caps_intersect (desired_caps, priv->caps);
+  subset_caps = gst_caps_intersect (desired_caps, device->priv->caps);
   gst_caps_unref (desired_caps);
 
   GST_INFO ("Got %" GST_PTR_FORMAT, subset_caps);
diff --git a/libcheese/cheese-camera-device.h b/libcheese/cheese-camera-device.h
index f3ad52e..7cb021d 100644
--- a/libcheese/cheese-camera-device.h
+++ b/libcheese/cheese-camera-device.h
@@ -38,6 +38,7 @@ G_BEGIN_DECLS
 #define CHEESE_CAMERA_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CHEESE_TYPE_CAMERA_DEVICE, \
                                                                       CheeseCameraDeviceClass))
 
+typedef struct _CheeseCameraDevicePrivate CheeseCameraDevicePrivate;
 typedef struct _CheeseCameraDeviceClass CheeseCameraDeviceClass;
 typedef struct _CheeseCameraDevice CheeseCameraDevice;
 
@@ -61,6 +62,7 @@ struct _CheeseCameraDevice
 {
   /*< private >*/
   GObject parent;
+  CheeseCameraDevicePrivate *priv;
 };
 
 #define CHEESE_TYPE_VIDEO_FORMAT (cheese_video_format_get_type ())
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index 6ad2571..ae1d2b7 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -72,7 +72,7 @@ typedef enum {
 } GstCameraBinFlags;
 
 
-typedef struct
+struct _CheeseCameraPrivate
 {
   GstBus *bus;
 
@@ -114,7 +114,7 @@ typedef struct
   guint eos_timeout_id;
 
   CheeseCameraDeviceMonitor *monitor;
-} CheeseCameraPrivate;
+};
 
 enum
 {
@@ -155,7 +155,7 @@ cheese_camera_photo_data (CheeseCamera *camera, GstBuffer *buffer)
   GdkPixbuf          *pixbuf;
   const int           bits_per_pixel = 8;
   guchar             *data = NULL;
-  CheeseCameraPrivate *priv  = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv  = camera->priv;
 
   caps = gst_buffer_get_caps (buffer);
   structure = gst_caps_get_structure (caps, 0);
@@ -271,7 +271,7 @@ cheese_camera_add_device (CheeseCameraDeviceMonitor *monitor,
 			  CheeseCameraDevice        *device,
                           CheeseCamera              *camera)
 {
-  CheeseCameraPrivate *priv  = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv  = camera->priv;
 
   g_ptr_array_add (priv->camera_devices, device);
   priv->num_camera_devices++;
@@ -294,7 +294,7 @@ cheese_camera_remove_device (CheeseCameraDeviceMonitor *monitor,
 {
   int i;
 
-  CheeseCameraPrivate *priv  = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv  = camera->priv;
 
   for (i = 0; i < priv->num_camera_devices; i++)
   {
@@ -320,7 +320,7 @@ cheese_camera_remove_device (CheeseCameraDeviceMonitor *monitor,
 static void
 cheese_camera_detect_camera_devices (CheeseCamera *camera)
 {
-  CheeseCameraPrivate       *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate       *priv = camera->priv;
 
   priv->num_camera_devices = 0;
   priv->camera_devices     = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
@@ -346,7 +346,7 @@ cheese_camera_detect_camera_devices (CheeseCamera *camera)
 static gboolean
 cheese_camera_set_camera_source (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   GError *err = NULL;
   char   *camera_input;
@@ -428,7 +428,7 @@ cheese_camera_set_error_element_not_found (GError **error, const char *factoryna
 static void
 cheese_camera_set_video_recording (CheeseCamera *camera, GError **error)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   GstElement          *video_enc;
   GstElement          *mux;
 
@@ -456,7 +456,7 @@ cheese_camera_set_video_recording (CheeseCamera *camera, GError **error)
 static gboolean
 cheese_camera_create_effects_preview_bin (CheeseCamera *camera, GError **error)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   gboolean ok = TRUE;
   GstPad  *pad;
@@ -501,7 +501,7 @@ cheese_camera_create_effects_preview_bin (CheeseCamera *camera, GError **error)
 static gboolean
 cheese_camera_create_video_filter_bin (CheeseCamera *camera, GError **error)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   gboolean ok = TRUE;
   GstPad  *pad;
@@ -572,7 +572,7 @@ cheese_camera_create_video_filter_bin (CheeseCamera *camera, GError **error)
 static int
 cheese_camera_get_num_camera_devices (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   return priv->num_camera_devices;
 }
@@ -587,7 +587,7 @@ cheese_camera_get_num_camera_devices (CheeseCamera *camera)
 CheeseCameraDevice *
 cheese_camera_get_selected_device (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   if (cheese_camera_get_num_camera_devices (camera) > 0)
     return CHEESE_CAMERA_DEVICE (
@@ -605,7 +605,7 @@ cheese_camera_get_selected_device (CheeseCamera *camera)
 void
 cheese_camera_switch_camera_device (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   /* gboolean was_recording        = FALSE; */
   gboolean pipeline_was_playing = FALSE;
@@ -645,7 +645,7 @@ cheese_camera_switch_camera_device (CheeseCamera *camera)
 void
 cheese_camera_play (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv   = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv   = camera->priv;
   CheeseCameraDevice  *device = g_ptr_array_index (priv->camera_devices, priv->selected_device);
   GstCaps             *caps;
 
@@ -682,7 +682,7 @@ cheese_camera_play (CheeseCamera *camera)
 void
 cheese_camera_stop (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   if (priv->camerabin != NULL)
     gst_element_set_state (priv->camerabin, GST_STATE_NULL);
@@ -692,7 +692,7 @@ cheese_camera_stop (CheeseCamera *camera)
 static void
 cheese_camera_change_effect_filter (CheeseCamera *camera, GstElement *new_filter)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   gboolean             ok;
 
   g_object_set (G_OBJECT (priv->main_valve), "drop", TRUE, NULL);
@@ -794,7 +794,7 @@ cheese_camera_set_effect (CheeseCamera *camera, CheeseEffect *effect)
 void
 cheese_camera_toggle_effects_pipeline (CheeseCamera *camera, gboolean active)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   if (active)
   {
@@ -817,7 +817,7 @@ cheese_camera_toggle_effects_pipeline (CheeseCamera *camera, gboolean active)
 void
 cheese_camera_connect_effect_texture (CheeseCamera *camera, CheeseEffect *effect, ClutterTexture *texture)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   GstElement *effect_filter;
   GstElement *display_element;
@@ -865,7 +865,7 @@ cheese_camera_connect_effect_texture (CheeseCamera *camera, CheeseEffect *effect
 void
 cheese_camera_start_video_recording (CheeseCamera *camera, const char *filename)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   g_object_set (priv->camerabin, "mode", MODE_VIDEO, NULL);
   gst_element_set_state (priv->camerabin, GST_STATE_READY);
@@ -885,7 +885,7 @@ static gboolean
 cheese_camera_force_stop_video_recording (gpointer data)
 {
   CheeseCamera        *camera = CHEESE_CAMERA (data);
-  CheeseCameraPrivate *priv   = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv   = camera->priv;
 
   if (priv->is_recording)
   {
@@ -910,7 +910,7 @@ cheese_camera_force_stop_video_recording (gpointer data)
 void
 cheese_camera_stop_video_recording (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   GstState             state;
 
   gst_element_get_state (priv->camerabin, &state, NULL, 0);
@@ -940,7 +940,7 @@ static void
 cheese_camera_image_done_cb (GstElement *camerabin, const gchar *filename,
                              CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   g_signal_handler_disconnect (G_OBJECT (priv->camerabin),
                                priv->photo_handler_signal_id);
   priv->photo_handler_signal_id = 0;
@@ -960,7 +960,7 @@ cheese_camera_image_done_cb (GstElement *camerabin, const gchar *filename,
 gboolean
 cheese_camera_take_photo (CheeseCamera *camera, const char *filename)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   if (priv->photo_handler_signal_id != 0)
   {
@@ -1006,7 +1006,7 @@ cheese_camera_take_photo (CheeseCamera *camera, const char *filename)
 gboolean
 cheese_camera_take_photo_pixbuf (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   GstCaps             *caps;
 
   if (priv->photo_handler_signal_id != 0)
@@ -1044,7 +1044,7 @@ cheese_camera_finalize (GObject *object)
   CheeseCamera *camera;
 
   camera = CHEESE_CAMERA (object);
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   cheese_camera_stop (camera);
 
@@ -1072,7 +1072,7 @@ cheese_camera_get_property (GObject *object, guint prop_id, GValue *value,
   CheeseCamera *self;
 
   self = CHEESE_CAMERA (object);
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (self);
+  CheeseCameraPrivate *priv = self->priv;
 
   switch (prop_id)
   {
@@ -1098,7 +1098,7 @@ cheese_camera_set_property (GObject *object, guint prop_id, const GValue *value,
   CheeseCamera *self;
 
   self = CHEESE_CAMERA (object);
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (self);
+  CheeseCameraPrivate *priv = self->priv;
 
   switch (prop_id)
   {
@@ -1228,7 +1228,7 @@ cheese_camera_class_init (CheeseCameraClass *klass)
 static void
 cheese_camera_init (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv = CHEESE_CAMERA_GET_PRIVATE (camera);
 
   priv->is_recording            = FALSE;
   priv->pipeline_is_playing     = FALSE;
@@ -1299,7 +1299,7 @@ cheese_camera_set_device_by_dev_file (CheeseCamera *camera, const gchar *file)
 static void
 cheese_camera_set_device_by_dev_uuid (CheeseCamera *camera, const gchar *uuid)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
   int                  i;
 
   g_return_if_fail (CHEESE_IS_CAMERA (camera));
@@ -1329,7 +1329,7 @@ cheese_camera_set_device_by_dev_uuid (CheeseCamera *camera, const gchar *uuid)
 void
 cheese_camera_setup (CheeseCamera *camera, const gchar *uuid, GError **error)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   GError  *tmp_error = NULL;
   GstElement *video_sink;
@@ -1419,7 +1419,7 @@ cheese_camera_get_camera_devices (CheeseCamera *camera)
 
   g_return_val_if_fail (CHEESE_IS_CAMERA (camera), NULL);
 
-  priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  priv = camera->priv;
 
   return g_ptr_array_ref (priv->camera_devices);
 }
@@ -1463,7 +1463,7 @@ cheese_camera_is_playing (CheeseCamera *camera)
 
   g_return_val_if_fail (CHEESE_IS_CAMERA (camera), FALSE);
 
-  priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  priv = camera->priv;
 
   return priv->pipeline_is_playing;
 }
@@ -1484,7 +1484,7 @@ cheese_camera_set_video_format (CheeseCamera *camera, CheeseVideoFormat *format)
   g_return_if_fail (CHEESE_IS_CAMERA (camera));
   g_return_if_fail (format != NULL);
 
-  priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  priv = camera->priv;
 
   if (!(priv->current_format->width == format->width &&
         priv->current_format->height == format->height))
@@ -1507,7 +1507,7 @@ cheese_camera_set_video_format (CheeseCamera *camera, CheeseVideoFormat *format)
 const CheeseVideoFormat *
 cheese_camera_get_current_video_format (CheeseCamera *camera)
 {
-  CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  CheeseCameraPrivate *priv = camera->priv;
 
   g_return_val_if_fail (CHEESE_IS_CAMERA (camera), NULL);
 
@@ -1534,7 +1534,7 @@ cheese_camera_get_balance_property_range (CheeseCamera *camera,
 
   g_return_val_if_fail (CHEESE_IS_CAMERA (camera), FALSE);
 
-  priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  priv = camera->priv;
 
   *min = 0.0;
   *max = 1.0;
@@ -1567,7 +1567,7 @@ cheese_camera_set_balance_property (CheeseCamera *camera, const gchar *property,
 
   g_return_if_fail (CHEESE_IS_CAMERA (camera));
 
-  priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+  priv = camera->priv;
 
   g_object_set (G_OBJECT (priv->video_balance), property, value, NULL);
 }
diff --git a/libcheese/cheese-camera.h b/libcheese/cheese-camera.h
index b03c234..eab3389 100644
--- a/libcheese/cheese-camera.h
+++ b/libcheese/cheese-camera.h
@@ -40,6 +40,7 @@ G_BEGIN_DECLS
 #define CHEESE_IS_CAMERA_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), CHEESE_TYPE_CAMERA))
 #define CHEESE_CAMERA_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CHEESE_TYPE_CAMERA, CheeseCameraClass))
 
+typedef struct _CheeseCameraPrivate CheeseCameraPrivate;
 typedef struct _CheeseCameraClass CheeseCameraClass;
 typedef struct _CheeseCamera CheeseCamera;
 
@@ -72,6 +73,7 @@ struct _CheeseCamera
 {
   /*< private >*/
   GObject parent;
+  CheeseCameraPrivate *priv;
 };
 
 /**
diff --git a/libcheese/cheese-effect.c b/libcheese/cheese-effect.c
index 2ca2fa0..889548a 100644
--- a/libcheese/cheese-effect.c
+++ b/libcheese/cheese-effect.c
@@ -44,8 +44,6 @@ G_DEFINE_TYPE (CheeseEffect, cheese_effect, G_TYPE_OBJECT)
 #define CHEESE_EFFECT_GET_PRIVATE(o) \
   (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHEESE_TYPE_EFFECT, CheeseEffectPrivate))
 
-typedef struct _CheeseEffectPrivate CheeseEffectPrivate;
-
 struct _CheeseEffectPrivate
 {
   char *name;
@@ -57,7 +55,7 @@ static void
 cheese_effect_get_property (GObject *object, guint property_id,
                             GValue *value, GParamSpec *pspec)
 {
-  CheeseEffectPrivate *priv = CHEESE_EFFECT_GET_PRIVATE (object);
+  CheeseEffectPrivate *priv = CHEESE_EFFECT (object)->priv;
 
   switch (property_id)
   {
@@ -79,7 +77,7 @@ static void
 cheese_effect_set_property (GObject *object, guint property_id,
                             const GValue *value, GParamSpec *pspec)
 {
-  CheeseEffectPrivate *priv = CHEESE_EFFECT_GET_PRIVATE (object);
+  CheeseEffectPrivate *priv = CHEESE_EFFECT (object)->priv;
 
   switch (property_id)
   {
@@ -152,9 +150,7 @@ cheese_effect_class_init (CheeseEffectClass *klass)
 gboolean
 cheese_effect_is_preview_connected (CheeseEffect *self)
 {
-  CheeseEffectPrivate *priv = CHEESE_EFFECT_GET_PRIVATE (self);
-
-  return priv->control_valve != NULL;
+  return self->priv->control_valve != NULL;
 }
 
 /**
@@ -166,9 +162,7 @@ cheese_effect_is_preview_connected (CheeseEffect *self)
 void
 cheese_effect_enable_preview (CheeseEffect *effect)
 {
-  CheeseEffectPrivate *priv = CHEESE_EFFECT_GET_PRIVATE (effect);
-
-  g_object_set (G_OBJECT (priv->control_valve), "drop", FALSE, NULL);
+  g_object_set (G_OBJECT (effect->priv->control_valve), "drop", FALSE, NULL);
 }
 
 /**
@@ -180,14 +174,13 @@ cheese_effect_enable_preview (CheeseEffect *effect)
 void
 cheese_effect_disable_preview (CheeseEffect *effect)
 {
-  CheeseEffectPrivate *priv = CHEESE_EFFECT_GET_PRIVATE (effect);
-
-  g_object_set (G_OBJECT (priv->control_valve), "drop", TRUE, NULL);
+  g_object_set (G_OBJECT (effect->priv->control_valve), "drop", TRUE, NULL);
 }
 
 static void
 cheese_effect_init (CheeseEffect *self)
 {
+  self->priv = CHEESE_EFFECT_GET_PRIVATE (self);
 }
 
 /**
diff --git a/libcheese/cheese-effect.h b/libcheese/cheese-effect.h
index db0e85a..9940024 100644
--- a/libcheese/cheese-effect.h
+++ b/libcheese/cheese-effect.h
@@ -41,6 +41,7 @@ G_BEGIN_DECLS
 #define CHEESE_EFFECT_GET_CLASS(obj) \
   (G_TYPE_INSTANCE_GET_CLASS ((obj), CHEESE_TYPE_EFFECT, CheeseEffectClass))
 
+typedef struct _CheeseEffectPrivate CheeseEffectPrivate;
 typedef struct _CheeseEffectClass CheeseEffectClass;
 typedef struct _CheeseEffect CheeseEffect;
 
@@ -64,9 +65,10 @@ struct _CheeseEffect
 {
   /*< private >*/
   GObject parent;
+  CheeseEffectPrivate *priv;
 };
 
-GType cheese_effect_get_type (void);
+GType cheese_effect_get_type (void) G_GNUC_CONST;
 
 CheeseEffect *cheese_effect_new (void);
 gboolean      cheese_effect_is_preview_connected (CheeseEffect *effect);
diff --git a/libcheese/cheese-fileutil.c b/libcheese/cheese-fileutil.c
index 5bb86f7..cf44592 100644
--- a/libcheese/cheese-fileutil.c
+++ b/libcheese/cheese-fileutil.c
@@ -44,13 +44,13 @@ G_DEFINE_TYPE (CheeseFileUtil, cheese_fileutil, G_TYPE_OBJECT)
 #define CHEESE_FILEUTIL_GET_PRIVATE(o) \
   (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHEESE_TYPE_FILEUTIL, CheeseFileUtilPrivate))
 
-typedef struct
+struct _CheeseFileUtilPrivate
 {
   gchar *video_path;
   gchar *photo_path;
   gint   burst_count;
   gchar *burst_raw_name;
-} CheeseFileUtilPrivate;
+};
 
 static gchar *
 cheese_fileutil_get_path_before_224 (CheeseFileUtil *fileutil);
@@ -64,9 +64,7 @@ cheese_fileutil_get_path_before_224 (CheeseFileUtil *fileutil);
 const gchar *
 cheese_fileutil_get_video_path (CheeseFileUtil *fileutil)
 {
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
-
-  return priv->video_path;
+  return fileutil->priv->video_path;
 }
 
 /**
@@ -78,9 +76,7 @@ cheese_fileutil_get_video_path (CheeseFileUtil *fileutil)
 const gchar *
 cheese_fileutil_get_photo_path (CheeseFileUtil *fileutil)
 {
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
-
-  return priv->photo_path;
+  return fileutil->priv->photo_path;
 }
 
 /*
@@ -118,7 +114,7 @@ cheese_fileutil_get_new_media_filename (CheeseFileUtil *fileutil, CheeseMediaMod
   GFile       *file;
   int          num;
 
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
+  CheeseFileUtilPrivate *priv = fileutil->priv;
 
   tm  = time (NULL);
   ptr = localtime (&tm);
@@ -184,7 +180,7 @@ cheese_fileutil_get_new_media_filename (CheeseFileUtil *fileutil, CheeseMediaMod
 void
 cheese_fileutil_reset_burst (CheeseFileUtil *fileutil)
 {
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
+  CheeseFileUtilPrivate *priv = fileutil->priv;
 
   priv->burst_count    = 0;
   priv->burst_raw_name = "";
@@ -196,7 +192,7 @@ cheese_fileutil_finalize (GObject *object)
   CheeseFileUtil *fileutil;
 
   fileutil = CHEESE_FILEUTIL (object);
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
+  CheeseFileUtilPrivate *priv = fileutil->priv;
 
   g_free (priv->video_path);
   g_free (priv->photo_path);
@@ -216,7 +212,7 @@ cheese_fileutil_class_init (CheeseFileUtilClass *klass)
 static void
 cheese_fileutil_init (CheeseFileUtil *fileutil)
 {
-  CheeseFileUtilPrivate *priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
+  CheeseFileUtilPrivate *priv = fileutil->priv = CHEESE_FILEUTIL_GET_PRIVATE (fileutil);
 
   priv->burst_count    = 0;
   priv->burst_raw_name = "";
diff --git a/libcheese/cheese-fileutil.h b/libcheese/cheese-fileutil.h
index 60d1a78..21b9eec 100644
--- a/libcheese/cheese-fileutil.h
+++ b/libcheese/cheese-fileutil.h
@@ -47,6 +47,7 @@ G_BEGIN_DECLS
 #define CHEESE_IS_FILEUTIL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CHEESE_TYPE_FILEUTIL))
 #define CHEESE_FILEUTIL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CHEESE_TYPE_FILEUTIL, CheeseFileUtilClass))
 
+typedef struct _CheeseFileUtilPrivate CheeseFileUtilPrivate;
 typedef struct _CheeseFileUtilClass CheeseFileUtilClass;
 typedef struct _CheeseFileUtil CheeseFileUtil;
 
@@ -70,6 +71,7 @@ struct _CheeseFileUtil
 {
   /*< private >*/
   GObject parent;
+  CheeseFileUtilPrivate *priv;
 };
 
 /**
diff --git a/libcheese/cheese-flash.c b/libcheese/cheese-flash.c
index cd90d83..2ccc535 100644
--- a/libcheese/cheese-flash.c
+++ b/libcheese/cheese-flash.c
@@ -64,13 +64,13 @@ G_DEFINE_TYPE (CheeseFlash, cheese_flash, G_TYPE_OBJECT);
 
 #define CHEESE_FLASH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHEESE_TYPE_FLASH, CheeseFlashPrivate))
 
-typedef struct
+struct _CheeseFlashPrivate
 {
   GtkWidget *parent;
   GtkWindow *window;
   guint flash_timeout_tag;
   guint fade_timeout_tag;
-} CheeseFlashPrivate;
+};
 
 /* Copy-pasted from totem/src/backend/video-utils.c
  * Waiting on GTK+ bug:
@@ -186,7 +186,7 @@ cheese_flash_window_draw_event_cb (GtkWidget *widget, cairo_t *cr, gpointer user
 static void
 cheese_flash_init (CheeseFlash *self)
 {
-  CheeseFlashPrivate *priv = CHEESE_FLASH_GET_PRIVATE (self);
+  CheeseFlashPrivate *priv = self->priv = CHEESE_FLASH_GET_PRIVATE (self);
   cairo_region_t *input_region;
   GtkWindow *window;
 
@@ -218,7 +218,7 @@ cheese_flash_init (CheeseFlash *self)
 static void
 cheese_flash_dispose (GObject *object)
 {
-  CheeseFlashPrivate *priv = CHEESE_FLASH_GET_PRIVATE (object);
+  CheeseFlashPrivate *priv = CHEESE_FLASH (object)->priv;
 
   if (priv->window != NULL)
   {
@@ -248,7 +248,7 @@ cheese_flash_set_property (GObject      *object,
                            const GValue *value,
                            GParamSpec   *pspec)
 {
-  CheeseFlashPrivate *priv = CHEESE_FLASH_GET_PRIVATE (object);
+  CheeseFlashPrivate *priv = CHEESE_FLASH (object)->priv;
 
   switch (prop_id)
   {
@@ -296,7 +296,7 @@ static gboolean
 cheese_flash_opacity_fade (gpointer data)
 {
   CheeseFlash        *flash        = data;
-  CheeseFlashPrivate *flash_priv   = CHEESE_FLASH_GET_PRIVATE (flash);
+  CheeseFlashPrivate *flash_priv   = flash->priv;
   GtkWindow          *flash_window = flash_priv->window;
   double              opacity      = gtk_window_get_opacity (flash_window);
 
@@ -316,7 +316,7 @@ cheese_flash_opacity_fade (gpointer data)
 static gboolean
 cheese_flash_start_fade (gpointer data)
 {
-  CheeseFlashPrivate *flash_priv = CHEESE_FLASH_GET_PRIVATE (CHEESE_FLASH (data));
+  CheeseFlashPrivate *flash_priv = CHEESE_FLASH (data)->priv;
 
   GtkWindow *flash_window = flash_priv->window;
 
@@ -340,7 +340,7 @@ cheese_flash_start_fade (gpointer data)
 void
 cheese_flash_fire (CheeseFlash *flash)
 {
-  CheeseFlashPrivate *flash_priv = CHEESE_FLASH_GET_PRIVATE (flash);
+  CheeseFlashPrivate *flash_priv = flash->priv;
   GtkWidget          *parent;
   GdkScreen          *screen;
   GdkRectangle        rect;
diff --git a/libcheese/cheese-flash.h b/libcheese/cheese-flash.h
index 8c46d85..ffeefb2 100644
--- a/libcheese/cheese-flash.h
+++ b/libcheese/cheese-flash.h
@@ -31,6 +31,7 @@ G_BEGIN_DECLS
 #define CHEESE_IS_FLASH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CHEESE_TYPE_FLASH))
 #define CHEESE_FLASH_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CHEESE_TYPE_FLASH, CheeseFlashClass))
 
+typedef struct _CheeseFlashPrivate CheeseFlashPrivate;
 typedef struct _CheeseFlashClass CheeseFlashClass;
 typedef struct _CheeseFlash CheeseFlash;
 
@@ -54,6 +55,7 @@ struct _CheeseFlash
 {
   /*< private >*/
   GObject parent_instance;
+  CheeseFlashPrivate *priv;
 };
 
 GType        cheese_flash_get_type (void) G_GNUC_CONST;



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