mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
gst/schedulers/: fix GStreamer to not have issues with lvalue casts anymore (fixes some bug, but bugzilla is down)
Original commit message from CVS: * gst/schedulers/gstbasicscheduler.c: (gst_basic_scheduler_src_wrapper): * gst/schedulers/gstoptimalscheduler.c: (gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper), (pad_clear_queued), (gst_opt_scheduler_add_element), (gst_opt_scheduler_remove_element): fix GStreamer to not have issues with lvalue casts anymore (fixes some bug, but bugzilla is down)
This commit is contained in:
parent
0c01133df9
commit
7f6e97ebe9
3 changed files with 24 additions and 11 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2004-03-24 Benjamin Otte <otte@gnome.org>
|
||||||
|
|
||||||
|
* gst/schedulers/gstbasicscheduler.c:
|
||||||
|
(gst_basic_scheduler_src_wrapper):
|
||||||
|
* gst/schedulers/gstoptimalscheduler.c:
|
||||||
|
(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
|
||||||
|
(pad_clear_queued), (gst_opt_scheduler_add_element),
|
||||||
|
(gst_opt_scheduler_remove_element):
|
||||||
|
fix GStreamer to not have issues with lvalue casts anymore (fixes
|
||||||
|
some bug, but bugzilla is down)
|
||||||
|
|
||||||
2004-03-24 Benjamin Otte <otte@gnome.org>
|
2004-03-24 Benjamin Otte <otte@gnome.org>
|
||||||
|
|
||||||
* gst/gstelement.c:
|
* gst/gstelement.c:
|
||||||
|
|
|
@ -34,8 +34,8 @@ GST_DEBUG_CATEGORY_STATIC (debug_scheduler);
|
||||||
|
|
||||||
typedef struct _GstSchedulerChain GstSchedulerChain;
|
typedef struct _GstSchedulerChain GstSchedulerChain;
|
||||||
|
|
||||||
#define GST_ELEMENT_THREADSTATE(elem) (cothread*) (GST_ELEMENT (elem)->sched_private)
|
#define GST_ELEMENT_THREADSTATE(elem) (GST_ELEMENT (elem)->sched_private)
|
||||||
#define GST_RPAD_BUFPEN(pad) (GstData*) (GST_REAL_PAD(pad)->sched_private)
|
#define GST_RPAD_BUFPEN(pad) (GST_REAL_PAD(pad)->sched_private)
|
||||||
|
|
||||||
#define GST_ELEMENT_COTHREAD_STOPPING GST_ELEMENT_SCHEDULER_PRIVATE1
|
#define GST_ELEMENT_COTHREAD_STOPPING GST_ELEMENT_SCHEDULER_PRIVATE1
|
||||||
#define GST_ELEMENT_IS_COTHREAD_STOPPING(element) GST_FLAG_IS_SET((element), GST_ELEMENT_COTHREAD_STOPPING)
|
#define GST_ELEMENT_IS_COTHREAD_STOPPING(element) GST_FLAG_IS_SET((element), GST_ELEMENT_COTHREAD_STOPPING)
|
||||||
|
|
|
@ -38,7 +38,9 @@ GST_DEBUG_CATEGORY_STATIC (debug_scheduler);
|
||||||
|
|
||||||
#define GST_ELEMENT_SCHED_CONTEXT(elem) ((GstOptSchedulerCtx*) (GST_ELEMENT (elem)->sched_private))
|
#define GST_ELEMENT_SCHED_CONTEXT(elem) ((GstOptSchedulerCtx*) (GST_ELEMENT (elem)->sched_private))
|
||||||
#define GST_ELEMENT_SCHED_GROUP(elem) (GST_ELEMENT_SCHED_CONTEXT (elem)->group)
|
#define GST_ELEMENT_SCHED_GROUP(elem) (GST_ELEMENT_SCHED_CONTEXT (elem)->group)
|
||||||
#define GST_PAD_BUFLIST(pad) ((GList*) (GST_REAL_PAD(pad)->sched_private))
|
/* need this first macro to not run into lvalue casts */
|
||||||
|
#define GST_PAD_BUFPEN(pad) (GST_REAL_PAD(pad)->sched_private)
|
||||||
|
#define GST_PAD_BUFLIST(pad) ((GList*) GST_PAD_BUFPEN(pad))
|
||||||
|
|
||||||
#define GST_ELEMENT_COTHREAD_STOPPING GST_ELEMENT_SCHEDULER_PRIVATE1
|
#define GST_ELEMENT_COTHREAD_STOPPING GST_ELEMENT_SCHEDULER_PRIVATE1
|
||||||
#define GST_ELEMENT_IS_COTHREAD_STOPPING(element) GST_FLAG_IS_SET((element), GST_ELEMENT_COTHREAD_STOPPING)
|
#define GST_ELEMENT_IS_COTHREAD_STOPPING(element) GST_FLAG_IS_SET((element), GST_ELEMENT_COTHREAD_STOPPING)
|
||||||
|
@ -1208,13 +1210,13 @@ gst_opt_scheduler_loop_wrapper (GstPad * sinkpad, GstData * data)
|
||||||
} else {
|
} else {
|
||||||
GST_LOG ("queueing data %p on %s:%s's bufpen", data,
|
GST_LOG ("queueing data %p on %s:%s's bufpen", data,
|
||||||
GST_DEBUG_PAD_NAME (peer));
|
GST_DEBUG_PAD_NAME (peer));
|
||||||
GST_PAD_BUFLIST (peer) = g_list_append (GST_PAD_BUFLIST (peer), data);
|
GST_PAD_BUFPEN (peer) = g_list_append (GST_PAD_BUFLIST (peer), data);
|
||||||
schedule_group (group);
|
schedule_group (group);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
GST_LOG ("queueing data %p on %s:%s's bufpen", data,
|
GST_LOG ("queueing data %p on %s:%s's bufpen", data,
|
||||||
GST_DEBUG_PAD_NAME (peer));
|
GST_DEBUG_PAD_NAME (peer));
|
||||||
GST_PAD_BUFLIST (peer) = g_list_append (GST_PAD_BUFLIST (peer), data);
|
GST_PAD_BUFPEN (peer) = g_list_append (GST_PAD_BUFLIST (peer), data);
|
||||||
if (!(group->flags & GST_OPT_SCHEDULER_GROUP_RUNNING)) {
|
if (!(group->flags & GST_OPT_SCHEDULER_GROUP_RUNNING)) {
|
||||||
GST_LOG ("adding group %p to runqueue", group);
|
GST_LOG ("adding group %p to runqueue", group);
|
||||||
if (!g_list_find (osched->runqueue, group)) {
|
if (!g_list_find (osched->runqueue, group)) {
|
||||||
|
@ -1244,7 +1246,7 @@ gst_opt_scheduler_get_wrapper (GstPad * srcpad)
|
||||||
/* first try to grab a queued buffer */
|
/* first try to grab a queued buffer */
|
||||||
if (GST_PAD_BUFLIST (srcpad)) {
|
if (GST_PAD_BUFLIST (srcpad)) {
|
||||||
data = GST_PAD_BUFLIST (srcpad)->data;
|
data = GST_PAD_BUFLIST (srcpad)->data;
|
||||||
GST_PAD_BUFLIST (srcpad) = g_list_remove (GST_PAD_BUFLIST (srcpad), data);
|
GST_PAD_BUFPEN (srcpad) = g_list_remove (GST_PAD_BUFLIST (srcpad), data);
|
||||||
|
|
||||||
GST_LOG ("returning popped queued data %p", data);
|
GST_LOG ("returning popped queued data %p", data);
|
||||||
|
|
||||||
|
@ -1298,7 +1300,7 @@ gst_opt_scheduler_get_wrapper (GstPad * srcpad)
|
||||||
} else {
|
} else {
|
||||||
if (GST_PAD_BUFLIST (srcpad)) {
|
if (GST_PAD_BUFLIST (srcpad)) {
|
||||||
data = GST_PAD_BUFLIST (srcpad)->data;
|
data = GST_PAD_BUFLIST (srcpad)->data;
|
||||||
GST_PAD_BUFLIST (srcpad) =
|
GST_PAD_BUFPEN (srcpad) =
|
||||||
g_list_remove (GST_PAD_BUFLIST (srcpad), data);
|
g_list_remove (GST_PAD_BUFLIST (srcpad), data);
|
||||||
} else if (disabled) {
|
} else if (disabled) {
|
||||||
/* no buffer in queue and peer group was disabled */
|
/* no buffer in queue and peer group was disabled */
|
||||||
|
@ -1341,7 +1343,7 @@ pad_clear_queued (GstPad * srcpad, gpointer user_data)
|
||||||
GST_LOG ("need to clear some buffers");
|
GST_LOG ("need to clear some buffers");
|
||||||
g_list_foreach (buflist, (GFunc) clear_queued, NULL);
|
g_list_foreach (buflist, (GFunc) clear_queued, NULL);
|
||||||
g_list_free (buflist);
|
g_list_free (buflist);
|
||||||
GST_PAD_BUFLIST (srcpad) = NULL;
|
GST_PAD_BUFPEN (srcpad) = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1660,7 +1662,7 @@ gst_opt_scheduler_add_element (GstScheduler * sched, GstElement * element)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ctx = g_new0 (GstOptSchedulerCtx, 1);
|
ctx = g_new0 (GstOptSchedulerCtx, 1);
|
||||||
GST_ELEMENT_SCHED_CONTEXT (element) = ctx;
|
GST_ELEMENT (element)->sched_private = ctx;
|
||||||
ctx->flags = GST_OPT_SCHEDULER_CTX_DISABLED;
|
ctx->flags = GST_OPT_SCHEDULER_CTX_DISABLED;
|
||||||
|
|
||||||
/* set event handler on all pads here so events work unconnected too;
|
/* set event handler on all pads here so events work unconnected too;
|
||||||
|
@ -1713,8 +1715,8 @@ gst_opt_scheduler_remove_element (GstScheduler * sched, GstElement * element)
|
||||||
remove_from_group (group, element);
|
remove_from_group (group, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (GST_ELEMENT_SCHED_CONTEXT (element));
|
g_free (GST_ELEMENT (element)->sched_private);
|
||||||
GST_ELEMENT_SCHED_CONTEXT (element) = NULL;
|
GST_ELEMENT (element)->sched_private = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue