mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
formatter: Add a "loaded" signal
API: GESFormatter::loaded signal API: GESFormatter->project_loaded VMethod
This commit is contained in:
parent
5672ac8159
commit
f5c861ddc3
3 changed files with 39 additions and 0 deletions
|
@ -753,6 +753,7 @@ GESFormatterClass
|
||||||
GESFormatterLoadFromURIMethod
|
GESFormatterLoadFromURIMethod
|
||||||
GESFormatterSaveToURIMethod
|
GESFormatterSaveToURIMethod
|
||||||
GESFormatterSourceMovedMethod
|
GESFormatterSourceMovedMethod
|
||||||
|
GESFormatterLoadedMethod
|
||||||
ges_default_formatter_new
|
ges_default_formatter_new
|
||||||
ges_formatter_load_from_uri
|
ges_formatter_load_from_uri
|
||||||
ges_formatter_save_to_uri
|
ges_formatter_save_to_uri
|
||||||
|
|
|
@ -38,6 +38,9 @@
|
||||||
*
|
*
|
||||||
* Support for saving or loading new formats can be added by creating a subclass of
|
* Support for saving or loading new formats can be added by creating a subclass of
|
||||||
* #GESFormatter and implement the various vmethods of #GESFormatterClass.
|
* #GESFormatter and implement the various vmethods of #GESFormatterClass.
|
||||||
|
*
|
||||||
|
* Note that subclasses should call project_loaded wen they are done loading
|
||||||
|
* a project.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
@ -71,9 +74,13 @@ static gboolean default_can_save_uri (const gchar * uri);
|
||||||
static void discovery_error_cb (GESTimeline * timeline,
|
static void discovery_error_cb (GESTimeline * timeline,
|
||||||
GESTimelineFileSource * tfs, GError * error, GESFormatter * formatter);
|
GESTimelineFileSource * tfs, GError * error, GESFormatter * formatter);
|
||||||
|
|
||||||
|
static gboolean project_loaded (GESFormatter * formatter,
|
||||||
|
GESTimeline * timeline);
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SOURCE_MOVED_SIGNAL,
|
SOURCE_MOVED_SIGNAL,
|
||||||
|
LOADED_SIGNAL,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -98,6 +105,15 @@ ges_formatter_class_init (GESFormatterClass * klass)
|
||||||
G_SIGNAL_RUN_LAST, 0, NULL, NULL, ges_marshal_VOID__OBJECT, G_TYPE_NONE,
|
G_SIGNAL_RUN_LAST, 0, NULL, NULL, ges_marshal_VOID__OBJECT, G_TYPE_NONE,
|
||||||
1, GES_TYPE_TIMELINE_FILE_SOURCE);
|
1, GES_TYPE_TIMELINE_FILE_SOURCE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GESFormatter::loaded:
|
||||||
|
* @formatter: the #GESFormatter that is done loading a project.
|
||||||
|
*/
|
||||||
|
ges_formatter_signals[LOADED_SIGNAL] =
|
||||||
|
g_signal_new ("loaded", G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST, 0, NULL, NULL, ges_marshal_VOID__OBJECT, G_TYPE_NONE,
|
||||||
|
1, GES_TYPE_TIMELINE);
|
||||||
|
|
||||||
object_class->dispose = ges_formatter_dispose;
|
object_class->dispose = ges_formatter_dispose;
|
||||||
|
|
||||||
klass->can_load_uri = default_can_load_uri;
|
klass->can_load_uri = default_can_load_uri;
|
||||||
|
@ -105,6 +121,7 @@ ges_formatter_class_init (GESFormatterClass * klass)
|
||||||
klass->load_from_uri = load_from_uri;
|
klass->load_from_uri = load_from_uri;
|
||||||
klass->save_to_uri = save_to_uri;
|
klass->save_to_uri = save_to_uri;
|
||||||
klass->update_source_uri = NULL;
|
klass->update_source_uri = NULL;
|
||||||
|
klass->project_loaded = project_loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -535,3 +552,11 @@ discovery_error_cb (GESTimeline * timeline,
|
||||||
tfs);
|
tfs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
project_loaded (GESFormatter * formatter, GESTimeline * timeline)
|
||||||
|
{
|
||||||
|
g_signal_emit (formatter, ges_formatter_signals[LOADED_SIGNAL], 0, timeline);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -117,6 +117,17 @@ typedef gboolean (*GESFormatterLoadMethod) (GESFormatter * formatter,
|
||||||
typedef gboolean (*GESFormatterSourceMovedMethod) (GESFormatter *formatter,
|
typedef gboolean (*GESFormatterSourceMovedMethod) (GESFormatter *formatter,
|
||||||
GESTimelineFileSource *tfs, gchar *new_uri);
|
GESTimelineFileSource *tfs, gchar *new_uri);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GESFormatterLoadedMethod
|
||||||
|
* @formatter: The #GESFormatter that is done loading
|
||||||
|
* @timeline: The #GESTimeline that has finnished to load
|
||||||
|
*
|
||||||
|
* This method should be called by sublcasses when they are done
|
||||||
|
* loading @timeline
|
||||||
|
*/
|
||||||
|
typedef gboolean (*GESFormatterLoadedMethod) (GESFormatter *formatter,
|
||||||
|
GESTimeline *timeline);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GESFormatterClass:
|
* GESFormatterClass:
|
||||||
* @parent_class: the parent class structure
|
* @parent_class: the parent class structure
|
||||||
|
@ -126,6 +137,7 @@ typedef gboolean (*GESFormatterSourceMovedMethod) (GESFormatter *formatte
|
||||||
* @save_to_uri: class method to serialize data to a URI
|
* @save_to_uri: class method to serialize data to a URI
|
||||||
* @update_source_uri: virtual method to specify that a source has moved, and thus its URI
|
* @update_source_uri: virtual method to specify that a source has moved, and thus its URI
|
||||||
* must be set to its new location (specified by the user)
|
* must be set to its new location (specified by the user)
|
||||||
|
* @project_loaded: Must be called by subclasses when done loading a project
|
||||||
*
|
*
|
||||||
* GES Formatter class. Override the vmethods to implement the formatter functionnality.
|
* GES Formatter class. Override the vmethods to implement the formatter functionnality.
|
||||||
*/
|
*/
|
||||||
|
@ -138,6 +150,7 @@ struct _GESFormatterClass {
|
||||||
GESFormatterLoadFromURIMethod load_from_uri;
|
GESFormatterLoadFromURIMethod load_from_uri;
|
||||||
GESFormatterSaveToURIMethod save_to_uri;
|
GESFormatterSaveToURIMethod save_to_uri;
|
||||||
GESFormatterSourceMovedMethod update_source_uri;
|
GESFormatterSourceMovedMethod update_source_uri;
|
||||||
|
GESFormatterLoadedMethod project_loaded;
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
/* FIXME : formatter name */
|
/* FIXME : formatter name */
|
||||||
|
|
Loading…
Reference in a new issue