diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2005-05-17 17:44:58 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2005-05-17 17:44:58 +0000 |
commit | d564e75b34a1ad0cca9d77a3c6b9a158ea6204cd (patch) | |
tree | d9c602e94637f1ad09b8a2d233a318bda9049315 /ext/libcaca/gstcacasink.c | |
parent | 924a50450fb0354821f4e8fedad5290e623362b2 (diff) |
ext/libcaca/gstcacasink.*: Cleanups.
Original commit message from CVS:
* ext/libcaca/gstcacasink.c: (gst_cacasink_setcaps),
(gst_cacasink_render), (gst_cacasink_open), (gst_cacasink_close),
(gst_cacasink_change_state):
* ext/libcaca/gstcacasink.h:
Cleanups.
Diffstat (limited to 'ext/libcaca/gstcacasink.c')
-rw-r--r-- | ext/libcaca/gstcacasink.c | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/ext/libcaca/gstcacasink.c b/ext/libcaca/gstcacasink.c index 9dece871..e9c788d6 100644 --- a/ext/libcaca/gstcacasink.c +++ b/ext/libcaca/gstcacasink.c @@ -191,12 +191,6 @@ gst_cacasink_setcaps (GstBaseSink * basesink, GstCaps * caps) cacasink = GST_CACASINK (basesink); - /* We cannot use library functions if the sink is not open */ - if (!GST_FLAG_IS_SET (GST_ELEMENT (cacasink), GST_CACASINK_OPEN)) - return FALSE; - /*if (!GST_CAPS_IS_FIXED (caps)) - return FALSE; */ - structure = gst_caps_get_structure (caps, 0); gst_structure_get_int (structure, "width", &(cacasink->width)); gst_structure_get_int (structure, "height", &(cacasink->height)); @@ -261,10 +255,6 @@ gst_cacasink_render (GstBaseSink * basesink, GstBuffer * buffer) { GstCACASink *cacasink = GST_CACASINK (basesink); - /* We cannot use library functions if the sink is not open */ - if (!GST_FLAG_IS_SET (GST_ELEMENT (cacasink), GST_CACASINK_OPEN)) - return GST_FLOW_WRONG_STATE; - GST_DEBUG ("render"); caca_clear (); @@ -344,8 +334,6 @@ gst_cacasink_get_property (GObject * object, guint prop_id, GValue * value, static gboolean gst_cacasink_open (GstCACASink * cacasink) { - g_return_val_if_fail (!GST_FLAG_IS_SET (cacasink, GST_CACASINK_OPEN), FALSE); - cacasink->bitmap = NULL; caca_init (); @@ -356,45 +344,46 @@ gst_cacasink_open (GstCACASink * cacasink) cacasink->dither = 0; caca_set_dithering (CACA_DITHERING_NONE); - - GST_FLAG_SET (cacasink, GST_CACASINK_OPEN); - return TRUE; } static void gst_cacasink_close (GstCACASink * cacasink) { - g_return_if_fail (GST_FLAG_IS_SET (cacasink, GST_CACASINK_OPEN)); - if (cacasink->bitmap) { caca_free_bitmap (cacasink->bitmap); cacasink->bitmap = NULL; } caca_end (); - - GST_FLAG_UNSET (cacasink, GST_CACASINK_OPEN); } static GstElementStateReturn gst_cacasink_change_state (GstElement * element) { - g_return_val_if_fail (GST_IS_CACASINK (element), GST_STATE_FAILURE); + GstElementStateReturn ret; + gint transition; - if (GST_STATE_PENDING (element) == GST_STATE_NULL) { - if (GST_FLAG_IS_SET (element, GST_CACASINK_OPEN)) - gst_cacasink_close (GST_CACASINK (element)); - } else { - if (!GST_FLAG_IS_SET (element, GST_CACASINK_OPEN)) { + transition = GST_STATE_TRANSITION (element); + + switch (transition) { + case GST_STATE_READY_TO_PAUSED: if (!gst_cacasink_open (GST_CACASINK (element))) return GST_STATE_FAILURE; - } + break; + default: + break; } - if (GST_ELEMENT_CLASS (parent_class)->change_state) - return GST_ELEMENT_CLASS (parent_class)->change_state (element); + ret = GST_ELEMENT_CLASS (parent_class)->change_state (element); - return GST_STATE_SUCCESS; + switch (transition) { + case GST_STATE_PAUSED_TO_READY: + gst_cacasink_close (GST_CACASINK (element)); + break; + default: + break; + } + return ret; } static gboolean |