GESTrackObject: Add 'active' property.
authorEdward Hervey <edward.hervey@collabora.co.uk>
Wed, 30 Sep 2009 14:40:59 +0000 (16:40 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Wed, 30 Sep 2009 14:41:47 +0000 (16:41 +0200)
This property allows (de)activating a track object

ges/ges-track-object.c
ges/ges-track-object.h

index b8e19bc87a36519e0a47142f7948a09aa3feb241..5dbff562c6357a7b81c05217074b761ad9a95dd5 100644 (file)
@@ -56,6 +56,7 @@ enum
   PROP_INPOINT,
   PROP_DURATION,
   PROP_PRIORITY,
+  PROP_ACTIVE
 };
 
 static gboolean
@@ -80,6 +81,9 @@ ges_track_object_get_property (GObject * object, guint property_id,
     case PROP_PRIORITY:
       g_value_set_uint (value, tobj->priority);
       break;
+    case PROP_ACTIVE:
+      g_value_set_boolean (value, tobj->active);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
   }
@@ -104,6 +108,9 @@ ges_track_object_set_property (GObject * object, guint property_id,
     case PROP_PRIORITY:
       ges_track_object_set_priority_internal (tobj, g_value_get_uint (value));
       break;
+    case PROP_ACTIVE:
+      ges_track_object_set_active (tobj, g_value_get_boolean (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
   }
@@ -180,6 +187,16 @@ ges_track_object_class_init (GESTrackObjectClass * klass)
       g_param_spec_uint ("priority", "Priority",
           "The priority of the object", 0, G_MAXUINT, 0, G_PARAM_READWRITE));
 
+  /**
+   * GESTrackObject:active
+   *
+   * Whether the object should be taken into account in the #GEStrack output.
+   * If #FALSE, then its contents will not be used in the resulting track.
+   */
+  g_object_class_install_property (object_class, PROP_ACTIVE,
+      g_param_spec_boolean ("active", "Active", "Use object in output",
+          TRUE, G_PARAM_READWRITE));
+
   klass->create_gnl_object = ges_track_object_create_gnl_object_func;
 }
 
@@ -256,6 +273,20 @@ ges_track_object_set_priority_internal (GESTrackObject * object,
   return TRUE;
 }
 
+gboolean
+ges_track_object_set_active (GESTrackObject * object, gboolean active)
+{
+  GST_DEBUG ("object:%p, active:%d", object, active);
+
+  g_return_val_if_fail (object->gnlobject, FALSE);
+
+  if (G_UNLIKELY (active == object->active))
+    return FALSE;
+
+  g_object_set (object->gnlobject, "active", active, NULL);
+  return TRUE;
+}
+
 /* default 'create_gnl_object' virtual method implementation */
 static gboolean
 ges_track_object_create_gnl_object_func (GESTrackObject * object)
index 4cb38404f2fe1543c67fe7038adf8694e5164464..69a43a0bfc3d3df06cd6058da7113454c3892568 100644 (file)
@@ -72,6 +72,7 @@ struct _GESTrackObject {
   guint64 inpoint;
   guint64 duration;
   guint32 priority;
+  gboolean active;
 
   GstElement *gnlobject;
 };
@@ -105,7 +106,7 @@ gboolean ges_track_object_set_start_internal (GESTrackObject * object, guint64 s
 gboolean ges_track_object_set_inpoint_internal (GESTrackObject * object, guint64 inpoint);
 gboolean ges_track_object_set_duration_internal (GESTrackObject * object, guint64 duration);
 gboolean ges_track_object_set_priority_internal (GESTrackObject * object, guint32 priority);
-
+gboolean ges_track_object_set_active (GESTrackObject * object, gboolean active);
 G_END_DECLS
 
 #endif /* _GES_TRACK_OBJECT */