Merge remote-tracking branch 'origin/0.10'

Conflicts:
	bindings/python/Makefile.am
	ges/Makefile.am
This commit is contained in:
Sebastian Dröge 2012-04-04 12:08:06 +02:00
commit 8429fd526c
5 changed files with 70 additions and 11 deletions

View file

@ -147,6 +147,10 @@ dnl *** checks for dependency libraries ***
dnl GLib is required
AG_GST_GLIB_CHECK([2.31.14])
PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.16, HAVE_GIO=yes, HAVE_GIO=no)
AC_SUBST(GIO_CFLAGS)
AC_SUBST(GIO_LIBS)
dnl checks for gstreamer
dnl uninstalled is selected preferentially -- see pkg-config(1)
AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ], yes)

View file

@ -63,10 +63,11 @@ extra_files =
# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
# contains GtkObjects/GObjects and you want to document signals and properties.
GTKDOC_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
GTKDOC_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_BASE_CFLAGS) \
$(GST_CFLAGS) $(GIO_CFLAGS)
GTKDOC_LIBS = \
$(top_builddir)/ges/libges-@GST_MAJORMINOR@.la \
$(GST_BASE_LIBS) $(GST_LIBS)
$(GST_BASE_LIBS) $(GST_LIBS) $(GIO_LIBS)
GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC)

View file

@ -3,6 +3,8 @@ built_source_make =
lib_LTLIBRARIES = libges-@GST_MAJORMINOR@.la
EXTRA_libges_@GST_MAJORMINOR@_la_SOURCES = gesmarshal.list
CLEANFILES = $(BUILT_SOURCES) $(built_header_make) $(built_source_make)
libges_@GST_MAJORMINOR@_la_SOURCES = \
@ -94,9 +96,14 @@ libges_@GST_MAJORMINOR@include_HEADERS = \
noinst_HEADERS = \
ges-internal.h
libges_@GST_MAJORMINOR@_la_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_VIDEO_CFLAGS) $(GST_CONTROLLER_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(XML_CFLAGS)
libges_@GST_MAJORMINOR@_la_LIBADD = $(GST_PBUTILS_LIBS) $(GST_VIDEO_LIBS) $(GST_CONTROLLER_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(XML_LIBS)
libges_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) -export-symbols-regex \^_*\(ges_\|GES_\).*
libges_@GST_MAJORMINOR@_la_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) \
$(GST_VIDEO_CFLAGS) $(GST_CONTROLLER_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_CFLAGS) $(XML_CFLAGS) $(GIO_CFLAGS)
libges_@GST_MAJORMINOR@_la_LIBADD = $(GST_PBUTILS_LIBS) \
$(GST_VIDEO_LIBS) $(GST_CONTROLLER_LIBS) $(GST_PLUGINS_BASE_LIBS) \
$(GST_BASE_LIBS) $(GST_LIBS) $(XML_LIBS) $(GIO_LIBS)
libges_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) \
$(GST_LT_LDFLAGS) $(GIO_CFLAGS) -export-symbols-regex \^_*\(ges_\|GES_\).*
DISTCLEANFILE = $(CLEANFILES)
@ -129,12 +136,14 @@ GES-@GST_MAJORMINOR@.gir: $(INTROSPECTION_SCANNER) libges-@GST_MAJORMINOR@.la
-I$(top_builddir) \
--add-include-path=`$(PKG_CONFIG) --variable=girdir gstreamer-0.11` \
--add-include-path=`$(PKG_CONFIG) --variable=girdir gstreamer-pbutils-0.11` \
--add-include-path=`$(PKG_CONFIG) --variable=girdir gio-2.0` \
--library=libges-@GST_MAJORMINOR@.la \
--include=Gst-@GST_MAJORMINOR@ \
--include=GstPbutils-@GST_MAJORMINOR@ \
--libtool="$(top_builddir)/libtool" \
--pkg gstreamer-@GST_MAJORMINOR@ \
--pkg gstreamer-pbutils-@GST_MAJORMINOR@ \
--pkg gio-2.0 \
--pkg-export ges-@GST_MAJORMINOR@ \
--add-init-section="gst_init(NULL, NULL);" \
--add-init-section="ges_init(NULL, NULL);" \
@ -159,6 +168,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
--includedir=$(builddir) \
--includedir=`$(PKG_CONFIG) --variable=girdir gstreamer-0.11` \
--includedir=`$(PKG_CONFIG) --variable=girdir gstreamer-pbutils-0.11` \
--includedir=`$(PKG_CONFIG) --variable=girdir gio-2.0` \
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)

View file

@ -44,6 +44,7 @@
**/
#include <gst/gst.h>
#include <gio/gio.h>
#include <stdlib.h>
#include "ges-formatter.h"
@ -61,6 +62,7 @@ struct _GESFormatterPrivate
/* Make sure not to emit several times "moved-source" when the user already
* provided the new source URI. */
GHashTable *uri_newuri_table;
GHashTable *parent_newparent_table;
};
static void ges_formatter_dispose (GObject * object);
@ -131,6 +133,8 @@ ges_formatter_init (GESFormatter * object)
object->priv->uri_newuri_table = g_hash_table_new_full (g_str_hash,
g_str_equal, g_free, g_free);
object->priv->parent_newparent_table = g_hash_table_new_full (g_file_hash,
(GEqualFunc) g_file_equal, g_object_unref, g_object_unref);
}
static void
@ -142,6 +146,7 @@ ges_formatter_dispose (GObject * object)
g_free (priv->data);
}
g_hash_table_destroy (priv->uri_newuri_table);
g_hash_table_destroy (priv->parent_newparent_table);
}
/**
@ -519,10 +524,21 @@ ges_formatter_update_source_uri (GESFormatter * formatter,
g_hash_table_lookup (formatter->priv->uri_newuri_table, uri);
if (!cached_uri) {
GFile *parent, *new_parent, *new_file = g_file_new_for_uri (new_uri),
*file = g_file_new_for_uri (uri);
parent = g_file_get_parent (file);
new_parent = g_file_get_parent (new_file);
g_hash_table_insert (formatter->priv->uri_newuri_table, g_strdup (uri),
g_strdup (new_uri));
GST_DEBUG ("Adding %s to the new uri cache", new_uri);
g_hash_table_insert (formatter->priv->parent_newparent_table,
parent, new_parent);
GST_DEBUG ("Adding %s and its parent to the new uri cache", new_uri);
g_object_unref (file);
g_object_unref (new_file);
}
return klass->update_source_uri (formatter, source, new_uri);
@ -540,15 +556,43 @@ discovery_error_cb (GESTimeline * timeline,
if (error->domain == GST_RESOURCE_ERROR &&
error->code == GST_RESOURCE_ERROR_NOT_FOUND) {
const gchar *uri = ges_timeline_filesource_get_uri (tfs);
gchar *new_uri =
g_hash_table_lookup (formatter->priv->uri_newuri_table, uri);
gchar *new_uri = g_hash_table_lookup (formatter->priv->uri_newuri_table,
uri);
/* We didn't find this exact URI, trying to find its parent new directory */
if (!new_uri) {
GFile *parent, *file = g_file_new_for_uri (uri);
/* Check if we have the new parent in cache */
parent = g_file_get_parent (file);
if (parent) {
GFile *new_parent =
g_hash_table_lookup (formatter->priv->parent_newparent_table,
parent);
if (new_parent) {
gchar *basename = g_file_get_basename (file);
GFile *new_file = g_file_get_child (new_parent, basename);
new_uri = g_file_get_uri (new_file);
g_object_unref (new_file);
g_object_unref (parent);
g_free (basename);
}
}
g_object_unref (file);
}
if (new_uri) {
ges_formatter_update_source_uri (formatter, tfs, new_uri);
GST_DEBUG ("%s found in the cache, new uri: %s", uri, new_uri);
} else
} else {
g_signal_emit (formatter, ges_formatter_signals[SOURCE_MOVED_SIGNAL], 0,
tfs);
}
}
}

View file

@ -1,6 +1,6 @@
bin_PROGRAMS = ges-launch-@GST_MAJORMINOR@
AM_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_CFLAGS)
LDADD = $(top_builddir)/ges/libges-@GST_MAJORMINOR@.la $(GST_PBUTILS_LIBS) $(GST_LIBS)
AM_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
LDADD = $(top_builddir)/ges/libges-@GST_MAJORMINOR@.la $(GST_PBUTILS_LIBS) $(GST_LIBS) $(GIO_LIBS)
ges_launch_@GST_MAJORMINOR@_SOURCES = ges-launch.c