mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
The timeout handler should have lower priority than the source so we don't timeout before popping a message with 0 ti...
Original commit message from CVS: * gst/gstbus.c: (poll_func), (poll_timeout), (gst_bus_poll): * tools/gst-launch.c: (main): The timeout handler should have lower priority than the source so we don't timeout before popping a message with 0 timeout. Dump error messages after failed state change.
This commit is contained in:
parent
d30a4eb913
commit
4fd77c1920
3 changed files with 17 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2005-09-20 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/gstbus.c: (poll_func), (poll_timeout), (gst_bus_poll):
|
||||||
|
* tools/gst-launch.c: (main):
|
||||||
|
The timeout handler should have lower priority than the source
|
||||||
|
so we don't timeout before popping a message with 0 timeout.
|
||||||
|
Dump error messages after failed state change.
|
||||||
|
|
||||||
2005-09-20 Tim-Philipp Müller <tim at centricular dot net>
|
2005-09-20 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* tools/gst-inspect.c: (print_element_properties_info):
|
* tools/gst-inspect.c: (print_element_properties_info):
|
||||||
|
|
10
gst/gstbus.c
10
gst/gstbus.c
|
@ -657,13 +657,16 @@ typedef struct
|
||||||
static gboolean
|
static gboolean
|
||||||
poll_func (GstBus * bus, GstMessage * message, GstBusPollData * poll_data)
|
poll_func (GstBus * bus, GstMessage * message, GstBusPollData * poll_data)
|
||||||
{
|
{
|
||||||
if (!g_main_loop_is_running (poll_data->loop))
|
if (!g_main_loop_is_running (poll_data->loop)) {
|
||||||
|
GST_DEBUG ("mainloop %p not running", poll_data->loop);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (GST_MESSAGE_TYPE (message) & poll_data->events) {
|
if (GST_MESSAGE_TYPE (message) & poll_data->events) {
|
||||||
g_return_val_if_fail (poll_data->message == NULL, FALSE);
|
g_return_val_if_fail (poll_data->message == NULL, FALSE);
|
||||||
/* keep ref to message */
|
/* keep ref to message */
|
||||||
poll_data->message = gst_message_ref (message);
|
poll_data->message = gst_message_ref (message);
|
||||||
|
GST_DEBUG ("mainloop %p quit", poll_data->loop);
|
||||||
g_main_loop_quit (poll_data->loop);
|
g_main_loop_quit (poll_data->loop);
|
||||||
} else {
|
} else {
|
||||||
/* don't remove the source. */
|
/* don't remove the source. */
|
||||||
|
@ -676,6 +679,7 @@ poll_func (GstBus * bus, GstMessage * message, GstBusPollData * poll_data)
|
||||||
static gboolean
|
static gboolean
|
||||||
poll_timeout (GstBusPollData * poll_data)
|
poll_timeout (GstBusPollData * poll_data)
|
||||||
{
|
{
|
||||||
|
GST_DEBUG ("mainloop %p quit", poll_data->loop);
|
||||||
g_main_loop_quit (poll_data->loop);
|
g_main_loop_quit (poll_data->loop);
|
||||||
|
|
||||||
/* we don't remove the GSource as this would free our poll_data,
|
/* we don't remove the GSource as this would free our poll_data,
|
||||||
|
@ -739,10 +743,12 @@ gst_bus_poll (GstBus * bus, GstMessageType events, GstClockTimeDiff timeout)
|
||||||
else
|
else
|
||||||
poll_data->timeout_id = 0;
|
poll_data->timeout_id = 0;
|
||||||
|
|
||||||
id = gst_bus_add_watch_full (bus, G_PRIORITY_DEFAULT_IDLE, GST_MESSAGE_ANY,
|
id = gst_bus_add_watch_full (bus, G_PRIORITY_DEFAULT, GST_MESSAGE_ANY,
|
||||||
(GstBusFunc) poll_func, poll_data, (GDestroyNotify) poll_destroy);
|
(GstBusFunc) poll_func, poll_data, (GDestroyNotify) poll_destroy);
|
||||||
|
|
||||||
|
GST_DEBUG ("running mainloop %p", poll_data->loop);
|
||||||
g_main_loop_run (poll_data->loop);
|
g_main_loop_run (poll_data->loop);
|
||||||
|
GST_DEBUG ("mainloop stopped %p", poll_data->loop);
|
||||||
/* holds a ref */
|
/* holds a ref */
|
||||||
ret = poll_data->message;
|
ret = poll_data->message;
|
||||||
|
|
||||||
|
|
|
@ -609,6 +609,7 @@ main (int argc, char *argv[])
|
||||||
case GST_STATE_CHANGE_FAILURE:
|
case GST_STATE_CHANGE_FAILURE:
|
||||||
fprintf (stderr, _("ERROR: pipeline doesn't want to pause.\n"));
|
fprintf (stderr, _("ERROR: pipeline doesn't want to pause.\n"));
|
||||||
res = -1;
|
res = -1;
|
||||||
|
event_loop (pipeline, FALSE);
|
||||||
goto end;
|
goto end;
|
||||||
case GST_STATE_CHANGE_NO_PREROLL:
|
case GST_STATE_CHANGE_NO_PREROLL:
|
||||||
fprintf (stderr, _("NO_PREROLL pipeline ...\n"));
|
fprintf (stderr, _("NO_PREROLL pipeline ...\n"));
|
||||||
|
|
Loading…
Reference in a new issue