/**
* SECTION:gsttask
+ * @title: GstTask
* @short_description: Abstraction of GStreamer streaming threads.
* @see_also: #GstElement, #GstPad
*
#define SET_TASK_STATE(t,s) (g_atomic_int_set (&GST_TASK_STATE(t), (s)))
#define GET_TASK_STATE(t) ((GstTaskState) g_atomic_int_get (&GST_TASK_STATE(t)))
-#define GST_TASK_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_TASK, GstTaskPrivate))
-
struct _GstTaskPrivate
{
/* callbacks for managing the thread of this task */
__try {
RaiseException (0x406D1388, 0, sizeof (info) / sizeof (DWORD),
- (DWORD *) & info);
+ (const ULONG_PTR *) &info);
}
__except (EXCEPTION_CONTINUE_EXECUTION) {
}
GST_DEBUG_CATEGORY_INIT (task_debug, "task", 0, "Processing tasks"); \
}
-G_DEFINE_TYPE_WITH_CODE (GstTask, gst_task, GST_TYPE_OBJECT, _do_init);
+G_DEFINE_TYPE_WITH_CODE (GstTask, gst_task, GST_TYPE_OBJECT,
+ G_ADD_PRIVATE (GstTask) _do_init);
static void
init_klass_pool (GstTaskClass * klass)
gobject_class = (GObjectClass *) klass;
- g_type_class_add_private (klass, sizeof (GstTaskPrivate));
-
gobject_class->finalize = gst_task_finalize;
init_klass_pool (klass);
klass = GST_TASK_GET_CLASS (task);
- task->priv = GST_TASK_GET_PRIVATE (task);
+ task->priv = gst_task_get_instance_private (task);
task->running = FALSE;
task->thread = NULL;
task->lock = NULL;
g_mutex_lock (&pool_lock);
task->priv->pool = gst_object_ref (klass->pool);
g_mutex_unlock (&pool_lock);
-
- /* clear floating flag */
- gst_object_ref_sink (task);
}
static void
g_return_val_if_fail (func != NULL, NULL);
- task = g_object_newv (GST_TYPE_TASK, 0, NULL);
+ task = g_object_new (GST_TYPE_TASK, NULL);
task->func = func;
task->user_data = user_data;
task->notify = notify;
GST_DEBUG ("Created task %p", task);
+ /* clear floating flag */
+ gst_object_ref_sink (task);
+
return task;
}