[gstreamermm] Repaired classes with a slot member to signal per instance if a slot has been set or not.



commit a23ad7a4ed6c3ef92ccf0de2c67358e9a191f0a5
Author: José Alburquerque <jaalburqu svn gnome org>
Date:   Tue May 19 21:31:44 2009 -0400

    Repaired classes with a slot member to signal per instance if a slot has been set or not.
---
 ChangeLog                    |   10 ++++++++++
 gstreamer/src/audioclock.ccg |   29 ++++++++++++++++-------------
 gstreamer/src/audioclock.hg  |    3 ++-
 gstreamer/src/ringbuffer.ccg |   28 +++++++++++++++-------------
 gstreamer/src/ringbuffer.hg  |    3 ++-
 gstreamer/src/task.ccg       |   30 +++++++++++++++++-------------
 gstreamer/src/task.hg        |    3 ++-
 7 files changed, 64 insertions(+), 42 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cb4e3db..8e674c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2009-05-19  José Alburquerque  <jaalburqu svn gnome org>
 
+	* gstreamer/src/audioclock.ccg:
+	* gstreamer/src/audioclock.hg:
+	* gstreamer/src/ringbuffer.ccg:
+	* gstreamer/src/ringbuffer.hg:
+	* gstreamer/src/task.ccg:
+	* gstreamer/src/task.hg: Repaired classes with a slot member to signal
+	per instance if a slot has been set or not.
+
+2009-05-19  José Alburquerque  <jaalburqu svn gnome org>
+
 	* gstreamer/gstreamermm/init.h:
 	* gstreamer/src/audioclock.ccg:
 	* gstreamer/src/bin.ccg:
diff --git a/gstreamer/src/audioclock.ccg b/gstreamer/src/audioclock.ccg
index 8a7d9b5..ff569ea 100644
--- a/gstreamer/src/audioclock.ccg
+++ b/gstreamer/src/audioclock.ccg
@@ -44,11 +44,24 @@ static GstClockTime AudioClock_GetTime_gstreamermm_callback(GstClock* clock, voi
 namespace Gst
 {
 
+AudioClock::AudioClock(const Glib::ConstructParams& construct_params)
+:
+  Gst::SystemClock(construct_params),
+  _slot_set(false)
+{}
+
+AudioClock::AudioClock(GstAudioClock* castitem)
+:
+  Gst::SystemClock((GstSystemClock*)(castitem)),
+  _slot_set(false)
+{}
+
+
 AudioClock::AudioClock(const Glib::ustring& name, const SlotGetTime& time_slot)
-  : _CONSTRUCT("name", name.c_str())
+  : _CONSTRUCT("name", name.c_str()),
+    _slot_set(true)
 {
   slot = new SlotGetTime(time_slot);
-  _slot_set(true);
 
   //The following lines are taken verbatim from gst_audio_clock_new() after the
   //call to g_object_new() because it seems that bug #545782 will not be
@@ -57,20 +70,10 @@ AudioClock::AudioClock(const Glib::ustring& name, const SlotGetTime& time_slot)
   gobj()->user_data = &slot;
 }
 
-bool AudioClock::_slot_set(bool mark_set) const
-{
-  static bool slot_set = false;
-
-  if(mark_set)
-    slot_set = true;
-
-  return slot_set;
-}
-
 
 AudioClock::~AudioClock()
 {
-  if(_slot_set())
+  if(_slot_set)
     delete slot;
 }
 
diff --git a/gstreamer/src/audioclock.hg b/gstreamer/src/audioclock.hg
index 2e8ee0d..c85aaed 100644
--- a/gstreamer/src/audioclock.hg
+++ b/gstreamer/src/audioclock.hg
@@ -37,6 +37,7 @@ class AudioClock : public Gst::SystemClock
 {
   _CLASS_GOBJECT(AudioClock, GstAudioClock, GST_AUDIO_CLOCK, Gst::SystemClock, GstSystemClock)
   _CUSTOM_DTOR()
+  _CUSTOM_CTOR_CAST()
 
 public:
   /** For example,
@@ -67,7 +68,7 @@ public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 private:
   SlotGetTime* slot;
-  bool _slot_set(bool mark_set = false) const;
+  bool _slot_set;
 #endif
 };
 
diff --git a/gstreamer/src/ringbuffer.ccg b/gstreamer/src/ringbuffer.ccg
index b8f8b62..c39597c 100644
--- a/gstreamer/src/ringbuffer.ccg
+++ b/gstreamer/src/ringbuffer.ccg
@@ -98,28 +98,30 @@ void RingBufferSpec::copy_fields_to(GstRingBufferSpec& spec) const
   memcpy(spec.silence_sample, silence_sample, sizeof(spec.silence_sample));
 }
 
+RingBuffer::RingBuffer(const Glib::ConstructParams& construct_params)
+:
+  Gst::Object(construct_params),
+  _slot_set(false)
+{}
+
+RingBuffer::RingBuffer(GstRingBuffer* castitem)
+:
+  Gst::Object((GstObject*)(castitem)),
+  _slot_set(false)
+{}
+
 void RingBuffer::set_fill_slot(const SlotFill& slot)
 {
-  if(_slot_set())
+  if(_slot_set)
     delete this->slot;
 
   this->slot = new SlotFill(slot);
-  _slot_set(true);
+  _slot_set = true;
 
   gst_ring_buffer_set_callback(gobj(), &RingBuffer_Fill_gstreamermm_callback,
     this->slot);
 }
 
-bool RingBuffer::_slot_set(bool mark_set) const
-{
-  static bool slot_set = false;
-
-  if(mark_set)
-    slot_set = true;
-
-  return slot_set;
-}
-
 bool RingBuffer::acquire(const Gst::RingBufferSpec& spec)
 {
   GstRingBufferSpec gst_spec;
@@ -139,7 +141,7 @@ bool RingBuffer::parse_caps(Gst::RingBufferSpec& spec, const Glib::RefPtr<Gst::C
 RingBuffer::~RingBuffer()
 {
     // Delete task's slot upon destruction
-  if(_slot_set())
+  if(_slot_set)
     delete slot;
 }
 
diff --git a/gstreamer/src/ringbuffer.hg b/gstreamer/src/ringbuffer.hg
index 03ac2ab..fe2364c 100644
--- a/gstreamer/src/ringbuffer.hg
+++ b/gstreamer/src/ringbuffer.hg
@@ -128,6 +128,7 @@ class RingBuffer : public Gst::Object
 {
   _CLASS_GOBJECT(RingBuffer, GstRingBuffer, GST_RING_BUFFER, Gst::Object, GstObject)
   _CUSTOM_DTOR()
+  _CUSTOM_CTOR_CAST()
 
 public:
   /** For example,
@@ -199,7 +200,7 @@ public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 private:
   SlotFill* slot;
-  bool _slot_set(bool mark_set = false) const;
+  bool _slot_set;
 #endif
 };
 
diff --git a/gstreamer/src/task.ccg b/gstreamer/src/task.ccg
index d0f22d7..7030ecc 100644
--- a/gstreamer/src/task.ccg
+++ b/gstreamer/src/task.ccg
@@ -41,14 +41,28 @@ static void Task_Task_gstreamermm_callback(void* data)
 namespace Gst
 {
 
+Task::Task(const Glib::ConstructParams& construct_params)
+:
+  Object(construct_params),
+  _slot_set(false)
+{}
+
+Task::Task(GstTask* castitem)
+:
+  Object((GstObject*)(castitem)),
+  _slot_set(false)
+{}
+
+
 Task::Task(const SlotTask& task_slot)
-: _CONSTRUCT()
+:
+  _CONSTRUCT(),
+  _slot_set(true)
 {
   //Create a copy of the slot.  A pointer to this copy will be passed through
   //the call back's data parameter.  It will be destroyed in the Task's
   //destructor
   slot = new SlotTask(task_slot);
-  _slot_set(true);
 
   // These lines are taken verbatim from gst_task_create() after calling
   // g_object_new().
@@ -56,20 +70,10 @@ Task::Task(const SlotTask& task_slot)
   gobj()->data = &slot;
 }
 
-bool Task::_slot_set(bool mark_set) const
-{
-  static bool slot_set = false;
-
-  if(mark_set)
-    slot_set = true;
-
-  return slot_set;
-}
-
 Task::~Task()
 {
   // Delete task's slot upon destruction
-  if(_slot_set())
+  if(_slot_set)
     delete slot;
 }
 
diff --git a/gstreamer/src/task.hg b/gstreamer/src/task.hg
index dc42219..cb038ff 100644
--- a/gstreamer/src/task.hg
+++ b/gstreamer/src/task.hg
@@ -60,6 +60,7 @@ _WRAP_ENUM(TaskState, GstTaskState)
 class Task : public Object
 {
   _CLASS_GOBJECT(Task, GstTask, GST_TASK, Object, GstObject)
+  _CUSTOM_CTOR_CAST()
   _CUSTOM_DTOR()
 
 public:
@@ -94,7 +95,7 @@ public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 private:
   SlotTask* slot;
-  bool _slot_set(bool mark_set = false) const;
+  bool _slot_set;
 #endif
 };
 



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