colorbalance: add some guards to interface methods
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 9 Sep 2011 12:07:57 +0000 (13:07 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 9 Sep 2011 12:09:43 +0000 (13:09 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=658584

gst-libs/gst/interfaces/colorbalance.c

index 60268ac..0bf52a9 100644 (file)
@@ -124,7 +124,11 @@ gst_color_balance_class_init (GstColorBalanceClass * klass)
 const GList *
 gst_color_balance_list_channels (GstColorBalance * balance)
 {
-  GstColorBalanceClass *klass = GST_COLOR_BALANCE_GET_CLASS (balance);
+  GstColorBalanceClass *klass;
+
+  g_return_val_if_fail (GST_IS_COLOR_BALANCE (balance), NULL);
+
+  klass = GST_COLOR_BALANCE_GET_CLASS (balance);
 
   if (klass->list_channels) {
     return klass->list_channels (balance);
@@ -175,7 +179,11 @@ gint
 gst_color_balance_get_value (GstColorBalance * balance,
     GstColorBalanceChannel * channel)
 {
-  GstColorBalanceClass *klass = GST_COLOR_BALANCE_GET_CLASS (balance);
+  GstColorBalanceClass *klass;
+
+  g_return_val_if_fail (GST_IS_COLOR_BALANCE (balance), 0);
+
+  klass = GST_COLOR_BALANCE_GET_CLASS (balance);
 
   if (klass->get_value) {
     return klass->get_value (balance, channel);
@@ -197,7 +205,12 @@ gst_color_balance_get_value (GstColorBalance * balance,
 GstColorBalanceType
 gst_color_balance_get_balance_type (GstColorBalance * balance)
 {
-  GstColorBalanceClass *klass = GST_COLOR_BALANCE_GET_CLASS (balance);
+  GstColorBalanceClass *klass;
+
+  g_return_val_if_fail (GST_IS_COLOR_BALANCE (balance),
+      GST_COLOR_BALANCE_SOFTWARE);
+
+  klass = GST_COLOR_BALANCE_GET_CLASS (balance);
 
   return klass->balance_type;
 }
@@ -217,6 +230,9 @@ void
 gst_color_balance_value_changed (GstColorBalance * balance,
     GstColorBalanceChannel * channel, gint value)
 {
+
+  g_return_if_fail (GST_IS_COLOR_BALANCE (balance));
+
   g_signal_emit (G_OBJECT (balance),
       gst_color_balance_signals[VALUE_CHANGED], 0, channel, value);