diff options
| author | kwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059> | 2010-08-18 15:58:41 +0800 | 
|---|---|---|
| committer | kwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059> | 2010-08-18 15:58:41 +0800 | 
| commit | d5dba42e8b74e6d550653f5a750896e615d95c79 (patch) | |
| tree | 58bbb5a50e4c3c4fcf57bb6cba3661769cf2878d | |
| parent | a418b651cadf43e0aab394860e00f2c28b9978e5 (diff) | |
| download | marcuscom-ports-d5dba42e8b74e6d550653f5a750896e615d95c79.tar.gz marcuscom-ports-d5dba42e8b74e6d550653f5a750896e615d95c79.tar.zst marcuscom-ports-d5dba42e8b74e6d550653f5a750896e615d95c79.zip  | |
Update to 2.31.90.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@14432 df743ca5-7f9a-e211-a948-0013205c9059
| -rw-r--r-- | multimedia/cheese/Makefile | 45 | ||||
| -rw-r--r-- | multimedia/cheese/distinfo | 3 | ||||
| -rw-r--r-- | multimedia/cheese/files/patch-configure | 214 | ||||
| -rw-r--r-- | multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c | 438 | ||||
| -rw-r--r-- | multimedia/cheese/pkg-descr | 5 | ||||
| -rw-r--r-- | multimedia/cheese/pkg-plist | 377 | 
6 files changed, 1082 insertions, 0 deletions
diff --git a/multimedia/cheese/Makefile b/multimedia/cheese/Makefile new file mode 100644 index 000000000..411e3c42c --- /dev/null +++ b/multimedia/cheese/Makefile @@ -0,0 +1,45 @@ +# New ports collection makefile for:	cheese +# Date created:				13 January 2008 +# Whom:					FreeBSD GNOME Team <gnome@FreeBSD.org> +# +# $FreeBSD$ +#   $MCom: ports/multimedia/cheese/Makefile,v 1.58 2010/04/27 15:51:59 kwm Exp $ +# + +PORTNAME=	cheese +PORTVERSION=	2.31.90 +CATEGORIES=	multimedia gnome +MASTER_SITES=	GNOME +DIST_SUBDIR=	gnome2 + +MAINTAINER=	gnome@FreeBSD.org +COMMENT=	A Photobooth-inspired app for taking pictures and videos from webcam + +BUILD_DEPENDS=	${LOCALBASE}/include/linux/videodev.h:${PORTSDIR}/multimedia/v4l_compat +LIB_DEPENDS=	canberra-gtk.0:${PORTSDIR}/audio/libcanberra \ +		hal.1:${PORTSDIR}/sysutils/hal + +USE_XORG=	xxf86vm +USE_BZIP2=	yes +USE_GMAKE=	yes +USE_GNOME=	gnomehack gnomeprefix intlhack evolutiondataserver librsvg2 \ +		gnomedocutils gnomedesktop +USE_GETTEXT=	yes +USE_GSTREAMER=	good v4l2 +INSTALLS_OMF=	yes +INSTALLS_ICONS=	yes +USE_LDCONFIG=	yes +GNU_CONFIGURE=	yes +CONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include" \ +		LDFLAGS="-L${LOCALBASE}/lib" + +DOCS=		AUTHORS COPYING ChangeLog NEWS README +GCONF_SCHEMAS=	cheese.schemas + +post-install: +	@${MKDIR} ${DOCSDIR} +.for i in ${DOCS} +	@${INSTALL_DATA} ${WRKSRC}/${i} ${DOCSDIR} +.endfor + +.include <bsd.port.mk> diff --git a/multimedia/cheese/distinfo b/multimedia/cheese/distinfo new file mode 100644 index 000000000..1a40cb226 --- /dev/null +++ b/multimedia/cheese/distinfo @@ -0,0 +1,3 @@ +MD5 (gnome2/cheese-2.31.90.tar.bz2) = 9fb96abfeb3cc013eb8e39396f08dbc1 +SHA256 (gnome2/cheese-2.31.90.tar.bz2) = 146c2462d4b29cf6be2e54313c5591f19676872e4e03bfd4d72d273d575d6e59 +SIZE (gnome2/cheese-2.31.90.tar.bz2) = 5330737 diff --git a/multimedia/cheese/files/patch-configure b/multimedia/cheese/files/patch-configure new file mode 100644 index 000000000..8befb947b --- /dev/null +++ b/multimedia/cheese/files/patch-configure @@ -0,0 +1,214 @@ +--- configure.orig	2010-04-27 17:32:36.000000000 +0200 ++++ configure	2010-04-27 17:32:36.000000000 +0200 +@@ -756,8 +756,8 @@ HAVE_XTEST_FALSE + HAVE_XTEST_TRUE + XTEST_LIBS + OS_LINUX +-UDEV_LIBS +-UDEV_CFLAGS ++HAL_LIBS ++HAL_CFLAGS + HAVE_GNOME_DOC_UTILS_FALSE + HAVE_GNOME_DOC_UTILS_TRUE + DISTCHECK_CONFIGURE_FLAGS +@@ -975,8 +975,8 @@ LIBS + CPPFLAGS + CPP + PKG_CONFIG +-UDEV_CFLAGS +-UDEV_LIBS ++HAL_CFLAGS ++HAL_LIBS + CHEESE_CFLAGS + CHEESE_LIBS' +  +@@ -1646,8 +1646,8 @@ Some influential environment variables: +               you have headers in a nonstandard directory <include dir> +   CPP         C preprocessor +   PKG_CONFIG  path to pkg-config utility +-  UDEV_CFLAGS C compiler flags for UDEV, overriding pkg-config +-  UDEV_LIBS   linker flags for UDEV, overriding pkg-config ++  HAL_CFLAGS C compiler flags for HAL, overriding pkg-config ++  HAL_LIBS   linker flags for HAL, overriding pkg-config +   CHEESE_CFLAGS +               C compiler flags for CHEESE, overriding pkg-config +   CHEESE_LIBS linker flags for CHEESE, overriding pkg-config +@@ -13843,38 +13843,38 @@ LIBRSVG_REQUIRED=2.18.0 + # Check for udev + #******************************************************************************* +  +-UDEV_PKG= ++HAL_PKG= +  + pkg_failed=no +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UDEV" >&5 +-$as_echo_n "checking for UDEV... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for HAL" >&5 ++$as_echo_n "checking for HAL... " >&6; } +  +-if test -n "$UDEV_CFLAGS"; then +-    pkg_cv_UDEV_CFLAGS="$UDEV_CFLAGS" ++if test -n "$HAL_CFLAGS"; then ++    pkg_cv_HAL_CFLAGS="$HAL_CFLAGS" +  elif test -n "$PKG_CONFIG"; then +     if test -n "$PKG_CONFIG" && \ +-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\""; } >&5 +-  ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5 ++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hal\""; } >&5 ++  ($PKG_CONFIG --exists --print-errors "hal") 2>&5 +   ac_status=$? +   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +   test $ac_status = 0; }; then +-  pkg_cv_UDEV_CFLAGS=`$PKG_CONFIG --cflags "gudev-1.0" 2>/dev/null` ++  pkg_cv_HAL_CFLAGS=`$PKG_CONFIG --cflags "hal" 2>/dev/null` + else +   pkg_failed=yes + fi +  else +     pkg_failed=untried + fi +-if test -n "$UDEV_LIBS"; then +-    pkg_cv_UDEV_LIBS="$UDEV_LIBS" ++if test -n "$HAL_LIBS"; then ++    pkg_cv_HAL_LIBS="$HAL_LIBS" +  elif test -n "$PKG_CONFIG"; then +     if test -n "$PKG_CONFIG" && \ +-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\""; } >&5 +-  ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5 ++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hal\""; } >&5 ++  ($PKG_CONFIG --exists --print-errors "hal") 2>&5 +   ac_status=$? +   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +   test $ac_status = 0; }; then +-  pkg_cv_UDEV_LIBS=`$PKG_CONFIG --libs "gudev-1.0" 2>/dev/null` ++  pkg_cv_HAL_LIBS=`$PKG_CONFIG --libs "hal" 2>/dev/null` + else +   pkg_failed=yes + fi +@@ -13892,27 +13892,27 @@ else +         _pkg_short_errors_supported=no + fi +         if test $_pkg_short_errors_supported = yes; then +-	        UDEV_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gudev-1.0" 2>&1` ++	        HAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "hal" 2>&1` +         else +-	        UDEV_PKG_ERRORS=`$PKG_CONFIG --print-errors "gudev-1.0" 2>&1` ++	        HAL_PKG_ERRORS=`$PKG_CONFIG --print-errors "hal" 2>&1` +         fi + 	# Put the nasty error message in config.log where it belongs +-	echo "$UDEV_PKG_ERRORS" >&5 ++	echo "$HAL_PKG_ERRORS" >&5 +  + 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +-                UDEV_PKG= ++                HAL_PKG= + elif test $pkg_failed = untried; then +-	UDEV_PKG= ++	HAL_PKG= + else +-	UDEV_CFLAGS=$pkg_cv_UDEV_CFLAGS +-	UDEV_LIBS=$pkg_cv_UDEV_LIBS ++	HAL_CFLAGS=$pkg_cv_HAL_CFLAGS ++	HAL_LIBS=$pkg_cv_HAL_LIBS +         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +  +-$as_echo "#define HAVE_UDEV 1" >>confdefs.h ++$as_echo "#define HAVE_HAL 1" >>confdefs.h +  +-		  UDEV_PKG=gudev-1.0 ++		  HAL_PKG=hal + fi +  + { $as_echo "$as_me:${as_lineno-$LINENO}: checking operating system" >&5 +@@ -13925,7 +13925,7 @@ $as_echo "#define OS_LINUX /**/" >>confd +  + 		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5 + $as_echo "Linux" >&6; } +-		if test x$UDEV_PKG = "x" ; then ++		if test x$HAL_PKG = "x" ; then + 			as_fn_error "libgudev is required under Linux and not installed" "$LINENO" 5 + 		fi + 		;; +@@ -14034,7 +14034,7 @@ if test -n "$CHEESE_CFLAGS"; then +   dbus-glib-1 >= \$DBUS_GLIB_REQUIRED \\ +   pangocairo >= \$PANGOCAIRO_REQUIRED \\ +   librsvg-2.0 >= \$LIBRSVG_REQUIRED +-  libcanberra-gtk \$UDEV_PKG\""; } >&5 ++  libcanberra-gtk \$HAL_PKG\""; } >&5 +   ($PKG_CONFIG --exists --print-errors "\ +   glib-2.0 >= $GLIB_REQUIRED \ +   gobject-2.0 >= $GOBJECT_REQUIRED \ +@@ -14050,7 +14050,7 @@ if test -n "$CHEESE_CFLAGS"; then +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG") 2>&5 ++  libcanberra-gtk $HAL_PKG") 2>&5 +   ac_status=$? +   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +   test $ac_status = 0; }; then +@@ -14069,7 +14069,7 @@ if test -n "$CHEESE_CFLAGS"; then +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG" 2>/dev/null` ++  libcanberra-gtk $HAL_PKG" 2>/dev/null` + else +   pkg_failed=yes + fi +@@ -14095,7 +14095,7 @@ if test -n "$CHEESE_LIBS"; then +   dbus-glib-1 >= \$DBUS_GLIB_REQUIRED \\ +   pangocairo >= \$PANGOCAIRO_REQUIRED \\ +   librsvg-2.0 >= \$LIBRSVG_REQUIRED +-  libcanberra-gtk \$UDEV_PKG\""; } >&5 ++  libcanberra-gtk \$HAL_PKG\""; } >&5 +   ($PKG_CONFIG --exists --print-errors "\ +   glib-2.0 >= $GLIB_REQUIRED \ +   gobject-2.0 >= $GOBJECT_REQUIRED \ +@@ -14111,7 +14111,7 @@ if test -n "$CHEESE_LIBS"; then +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG") 2>&5 ++  libcanberra-gtk $HAL_PKG") 2>&5 +   ac_status=$? +   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +   test $ac_status = 0; }; then +@@ -14130,7 +14130,7 @@ if test -n "$CHEESE_LIBS"; then +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG" 2>/dev/null` ++  libcanberra-gtk $HAL_PKG" 2>/dev/null` + else +   pkg_failed=yes + fi +@@ -14163,7 +14163,7 @@ fi +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG" 2>&1` ++  libcanberra-gtk $HAL_PKG" 2>&1` +         else + 	        CHEESE_PKG_ERRORS=`$PKG_CONFIG --print-errors "\ +   glib-2.0 >= $GLIB_REQUIRED \ +@@ -14180,7 +14180,7 @@ fi +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG" 2>&1` ++  libcanberra-gtk $HAL_PKG" 2>&1` +         fi + 	# Put the nasty error message in config.log where it belongs + 	echo "$CHEESE_PKG_ERRORS" >&5 +@@ -14200,7 +14200,7 @@ fi +   dbus-glib-1 >= $DBUS_GLIB_REQUIRED \ +   pangocairo >= $PANGOCAIRO_REQUIRED \ +   librsvg-2.0 >= $LIBRSVG_REQUIRED +-  libcanberra-gtk $UDEV_PKG) were not met: ++  libcanberra-gtk $HAL_PKG) were not met: +  + $CHEESE_PKG_ERRORS +  diff --git a/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c new file mode 100644 index 000000000..8604c2377 --- /dev/null +++ b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c @@ -0,0 +1,438 @@ +--- libcheese/cheese-camera-device-monitor.c.orig	2010-08-16 23:00:43.000000000 +0200 ++++ libcheese/cheese-camera-device-monitor.c	2010-08-18 09:51:48.000000000 +0200 +@@ -24,24 +24,11 @@ + #endif +  + #include <glib-object.h> ++#include <glib/gstdio.h> + #include <dbus/dbus-glib-lowlevel.h> ++#include <libhal.h> + #include <string.h> +- +-#ifdef HAVE_UDEV +-  #define G_UDEV_API_IS_SUBJECT_TO_CHANGE 1 +-  #include <gudev/gudev.h> +-#else +-  #include <fcntl.h> +-  #include <unistd.h> +-  #include <sys/ioctl.h> +-  #if USE_SYS_VIDEOIO_H > 0 +-    #include <sys/types.h> +-    #include <sys/videoio.h> +-  #elif defined (__sun) +-    #include <sys/types.h> +-    #include <sys/videodev2.h> +-  #endif /* USE_SYS_VIDEOIO_H */ +-#endif ++#include <unistd.h> +  + #include "cheese-camera-device-monitor.h" + #include "cheese-marshal.h" +@@ -54,9 +41,9 @@ +  * #CheeseCameraDeviceMonitor provides a basic interface for +  * video4linux device enumeration and hotplugging. +  * +- * It uses either GUdev or some platform specific code to list video ++ * It uses either HAL or some platform specific code to list video +  * devices.  It is also capable (right now in linux only, with the +- * udev backend) to monitor device plugging and emit a ++ * hal backend) to monitor device plugging and emit a +  * CheeseCameraDeviceMonitor::added or +  * CheeseCameraDeviceMonitor::removed signal when an event happens. +  */ +@@ -80,11 +67,9 @@ enum CheeseCameraDeviceMonitorError +  + typedef struct + { +-#ifdef HAVE_UDEV +-  GUdevClient *client; +-#else ++  DBusConnection *connection; ++  LibHalContext *hal_ctx; +   guint filler; +-#endif /* HAVE_UDEV */ + } CheeseCameraDeviceMonitorPrivate; +  + enum +@@ -102,111 +87,77 @@ cheese_camera_device_monitor_error_quark +   return g_quark_from_static_string ("cheese-camera-error-quark"); + } +  +-#ifdef HAVE_UDEV +-static void +-cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor *monitor, +-                                    GUdevDevice               *udevice) ++cheese_camera_device_monitor_handle_udi (CheeseCameraDeviceMonitor *monitor, ++                                         const char                *udi) + { +-  const char         *device_file; +-  const char         *product_name; +-  const char         *vendor; +-  const char         *product; +-  const char         *bus; +-  gint                vendor_id   = 0; +-  gint                product_id  = 0; ++  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); ++  char               *device_file; ++  char               *product_name; ++  char               *capstr; +   gint                v4l_version = 0; ++  DBusError           error; +  +-  const gchar *devpath = g_udev_device_get_property (udevice, "DEVPATH"); ++  GST_INFO ("Checking hal device '%s'", udi); +  +-  GST_INFO ("Checking udev device '%s'", devpath); ++  dbus_error_init (&error); +  +-  bus = g_udev_device_get_property (udevice, "ID_BUS"); +-  if (g_strcmp0 (bus, "usb") == 0) +-  { +-    vendor = g_udev_device_get_property (udevice, "ID_VENDOR_ID"); +-    if (vendor != NULL) +-      vendor_id = g_ascii_strtoll (vendor, NULL, 16); +-    product = g_udev_device_get_property (udevice, "ID_MODEL_ID"); +-    if (product != NULL) +-      product_id = g_ascii_strtoll (product, NULL, 16); +-    if (vendor_id == 0 || product_id == 0) +-    { +-      GST_WARNING ("Error getting vendor and product id"); +-    } +-    else +-    { +-      GST_INFO ("Found device %04x:%04x, getting capabilities...", vendor_id, product_id); +-    } +-  } +-  else ++  product_name = libhal_device_get_property_string (priv->hal_ctx, udi, "info.product", &error); ++  if (dbus_error_is_set (&error)) +   { +-    GST_INFO ("Not an usb device, skipping vendor and model id retrieval"); ++    GST_WARNING ("error getting product name: %s: %s", error.name, error.message); ++    dbus_error_free (&error); ++    return; +   } +  +-  device_file = g_udev_device_get_device_file (udevice); +-  if (device_file == NULL) ++  device_file = libhal_device_get_property_string (priv->hal_ctx, udi, "video4linux.device", &error); ++  if (dbus_error_is_set (&error)) +   { +-    GST_WARNING ("Error getting V4L device"); +-    return; ++    GST_WARNING ("error getting V4L device for %s: %s: %s", udi, error.name, error.message); ++    dbus_error_free (&error); ++    libhal_free_string (product_name); +   } +  +-  /* vbi devices support capture capability too, but cannot be used, +-   * so detect them by device name */ +-  if (strstr (device_file, "vbi")) ++  if (g_access (device_file, (R_OK | W_OK)) == -1) +   { +-    GST_INFO ("Skipping vbi device: %s", device_file); ++    GST_WARNING ("Device %s does not have proper permissions.  Permissions must be 0666", device_file); ++    libhal_free_string (product_name); ++    libhal_free_string (device_file); +     return; +   } +  +-  v4l_version = g_udev_device_get_property_as_int (udevice, "ID_V4L_VERSION"); +-  if (v4l_version == 2 || v4l_version == 1) ++  capstr = libhal_device_get_property_string (priv->hal_ctx, udi, "video4linux.version", &error); ++  if (dbus_error_is_set (&error)) +   { +-    const char *caps; +- +-    caps = g_udev_device_get_property (udevice, "ID_V4L_CAPABILITIES"); +-    if (caps == NULL || strstr (caps, ":capture:") == NULL) +-    { +-      GST_WARNING ("Device %s seems to not have the capture capability, (radio tuner?)" +-                   "Removing it from device list.", device_file); +-      return; +-    } +-    product_name  = g_udev_device_get_property (udevice, "ID_V4L_PRODUCT"); +-  } +-  else if (v4l_version == 0) +-  { +-    GST_ERROR ("Fix your udev installation to include v4l_id, ignoring %s", device_file); ++    GST_WARNING ("error getting V4L version for %s: %s: %s", udi, error.name, error.message); ++    dbus_error_free (&error); ++    libhal_free_string (product_name); ++    libhal_free_string (device_file); +     return; +   } +-  else +-  { +-    g_assert_not_reached (); +-  } ++ ++  v4l_version = atoi (capstr); ++  libhal_free_string (capstr); +  +   g_signal_emit (monitor, monitor_signals[ADDED], 0, +-                 devpath, ++                 udi, +                  device_file, +                  product_name, +                  v4l_version); + } +  + static void +-cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor *monitor, +-                                      GUdevDevice               *udevice) +-{ +-  g_signal_emit (monitor, monitor_signals[REMOVED], 0, +-                 g_udev_device_get_property (udevice, "DEVPATH")); +-} ++cheese_camera_device_monitor_removed (LibHalContext             *ctx, ++                                      const char                *udi) ++ { ++  CheeseCameraDeviceMonitor *monitor; ++  void *data; +  +-static void +-cheese_camera_device_monitor_uevent_cb (GUdevClient               *client, +-                                        const gchar               *action, +-                                        GUdevDevice               *udevice, +-                                        CheeseCameraDeviceMonitor *monitor) +-{ +-  if (g_str_equal (action, "remove")) +-    cheese_camera_device_monitor_removed (monitor, udevice); +-  else if (g_str_equal (action, "add")) +-    cheese_camera_device_monitor_added (monitor, udevice); ++  data = libhal_ctx_get_user_data (ctx); ++  g_assert (data); ++ ++  monitor = CHEESE_CAMERA_DEVICE_MONITOR (data); ++ ++  g_signal_emit (monitor, monitor_signals[REMOVED], 0, udi); + } +  + /** +@@ -222,115 +173,85 @@ void + cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor) + { +   CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); +-  GList                            *devices, *l; +-  gint                              i = 0; ++  int         i; ++  int         num_udis = 0; ++  char      **udis; ++  DBusError   error; +  +-  if (priv->client == NULL) +-    return; ++  GST_INFO ("Probing devices with HAL..."); +  +-  GST_INFO ("Probing devices with udev..."); ++  if (priv->hal_ctx == NULL) ++     return; +  +-  devices = g_udev_client_query_by_subsystem (priv->client, "video4linux"); ++  dbus_error_init (&error); +  +-  /* Initialize camera structures */ +-  for (l = devices; l != NULL; l = l->next) ++  udis = libhal_find_device_by_capability (priv->hal_ctx, "video4linux", &num_udis, &error); ++ ++  if (dbus_error_is_set (&error)) +   { +-    cheese_camera_device_monitor_added (monitor, l->data); +-    g_object_unref (l->data); +-    i++; ++    GST_WARNING ("libhal_find_device_by_capability: %s: %s", error.name, error.message); ++    dbus_error_free (&error); ++    return; +   } +-  g_list_free (devices); ++ ++  /* Initialize camera structures */ ++  for (i = 0; i < num_udis; i++) ++    cheese_camera_device_monitor_handle_udi (monitor, udis[i]); ++  libhal_free_string_array (udis); +  +   if (i == 0) GST_WARNING ("No device found"); + } +  +-#else /* HAVE_UDEV */ +-void +-cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor) ++static void ++cheese_camera_device_monitor_added (LibHalContext *ctx, const char *udi) + { +-  #if 0 +-  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); +-  struct v4l2_capability            v2cap; +-  struct video_capability           v1cap; +-  int                               fd, ok; +- +-  if ((fd = open (device_path, O_RDONLY | O_NONBLOCK)) < 0) +-  { +-    g_warning ("Failed to open %s: %s", device_path, strerror (errno)); +-    return; +-  } +-  ok = ioctl (fd, VIDIOC_QUERYCAP, &v2cap); +-  if (ok < 0) +-  { +-    ok = ioctl (fd, VIDIOCGCAP, &v1cap); +-    if (ok < 0) +-    { +-      g_warning ("Error while probing v4l capabilities for %s: %s", +-                 device_path, strerror (errno)); +-      close (fd); +-      return; +-    } +-    g_print ("Detected v4l device: %s\n", v1cap.name); +-    g_print ("Device type: %d\n", v1cap.type); +-    gstreamer_src = "v4lsrc"; +-    product_name  = v1cap.name; +-  } +-  else +-  { +-    guint cap = v2cap.capabilities; +-    g_print ("Detected v4l2 device: %s\n", v2cap.card); +-    g_print ("Driver: %s, version: %d\n", v2cap.driver, v2cap.version); +- +-    /* g_print ("Bus info: %s\n", v2cap.bus_info); */ /* Doesn't seem anything useful */ +-    g_print ("Capabilities: 0x%08X\n", v2cap.capabilities); +-    if (!(cap & V4L2_CAP_VIDEO_CAPTURE)) +-    { +-      g_print ("Device %s seems to not have the capture capability, (radio tuner?)\n" +-               "Removing it from device list.\n", device_path); +-      close (fd); +-      return; +-    } +-    gstreamer_src = "v4l2src"; +-    product_name  = (char *) v2cap.card; +-  } +-  close (fd); ++  CheeseCameraDeviceMonitor *monitor; ++  char **caps; ++  guint i; ++  void *data; +  +-  GList *devices, *l; ++  data = libhal_ctx_get_user_data (ctx); ++  g_assert (data); +  +-  g_print ("Probing devices with udev...\n"); ++  monitor = CHEESE_CAMERA_DEVICE_MONITOR (data); +  +-  if (priv->client == NULL) ++  caps = libhal_device_get_property_strlist (ctx, udi, "info.capabilities", NULL); ++  if (caps == NULL) +     return; +  +-  devices = g_udev_client_query_by_subsystem (priv->client, "video4linux"); +- +-  /* Initialize camera structures */ +-  for (l = devices; l != NULL; l = l->next) ++  for (i = 0; caps[i] != NULL; i++) +   { +-    cheese_camera_device_monitor_added (monitor, l->data); +-    g_object_unref (l->data); ++    if (g_strcmp0 (caps[i], "video4linux") == 0) ++    { ++      cheese_camera_device_monitor_handle_udi (monitor, udi); ++      break; ++    } +   } +-  g_list_free (devices); +-  #endif +-} +  +-#endif /* HAVE_UDEV */ ++  libhal_free_string_array (caps); ++} +  + static void + cheese_camera_device_monitor_finalize (GObject *object) + { +-#ifdef HAVE_UDEV +   CheeseCameraDeviceMonitor *monitor; +  +   monitor = CHEESE_CAMERA_DEVICE_MONITOR (object); +   CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); +  +-  if (priv->client != NULL) ++  if (priv->connection != NULL) +   { +-    g_object_unref (priv->client); +-    priv->client = NULL; ++    dbus_connection_unref (priv->connection); ++    priv->connection = NULL; +   } +-#endif /* HAVE_UDEV */ ++  if (priv->hal_ctx != NULL) ++  { ++    libhal_ctx_set_device_added (priv->hal_ctx, NULL); ++    libhal_ctx_set_device_removed (priv->hal_ctx, NULL); ++    libhal_ctx_free (priv->hal_ctx); ++    priv->hal_ctx = NULL; ++  } ++ +   G_OBJECT_CLASS (cheese_camera_device_monitor_parent_class)->finalize (object); + } +  +@@ -385,14 +306,52 @@ cheese_camera_device_monitor_class_init  + static void + cheese_camera_device_monitor_init (CheeseCameraDeviceMonitor *monitor) + { +-#ifdef HAVE_UDEV +-  CheeseCameraDeviceMonitorPrivate *priv         = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); +-  const gchar *const                subsystems[] = {"video4linux", NULL}; +- +-  priv->client = g_udev_client_new (subsystems); +-  g_signal_connect (G_OBJECT (priv->client), "uevent", +-                    G_CALLBACK (cheese_camera_device_monitor_uevent_cb), monitor); +-#endif /* HAVE_UDEV */ ++  CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor); ++  LibHalContext *hal_ctx; ++  DBusError      error; ++ ++  dbus_error_init (&error); ++ ++  priv->connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); ++  dbus_connection_set_exit_on_disconnect (priv->connection, FALSE); ++ ++  hal_ctx = libhal_ctx_new (); ++  if (hal_ctx == NULL) ++  { ++    GST_WARNING ("Could not create libhal context"); ++    dbus_error_free (&error); ++    return; ++  } ++ ++  if (!libhal_ctx_set_dbus_connection (hal_ctx, priv->connection)) ++  { ++    GST_WARNING ("libhal_ctx_set_dbus_connection: %s: %s", error.name, error.message); ++    dbus_error_free (&error); ++    return; ++  } ++ ++  if (!libhal_ctx_init (hal_ctx, &error)) ++  { ++    if (dbus_error_is_set (&error)) ++    { ++      GST_WARNING ("libhal_ctx_init: %s: %s", error.name, error.message); ++      dbus_error_free (&error); ++    } ++    GST_WARNING ("Could not initialise connection to hald.\n" ++	         "Normally this means the HAL daemon (hald) is not running or not ready"); ++    return; ++  } ++ ++  dbus_connection_setup_with_g_main (priv->connection, NULL); ++ ++  if (!libhal_ctx_set_user_data (hal_ctx, monitor)) ++    GST_WARNING ("Failed to set user data on HAL context"); ++  if (!libhal_ctx_set_device_added (hal_ctx, cheese_camera_device_monitor_added)) ++    GST_WARNING ("Failed to connect to device added signal from HAL"); ++  if (!libhal_ctx_set_device_removed (hal_ctx, cheese_camera_device_monitor_removed)) ++    GST_WARNING ("Failed to connect to device removed signal from HAL"); ++ ++  priv->hal_ctx = hal_ctx; + } +  + /** diff --git a/multimedia/cheese/pkg-descr b/multimedia/cheese/pkg-descr new file mode 100644 index 000000000..51402b10a --- /dev/null +++ b/multimedia/cheese/pkg-descr @@ -0,0 +1,5 @@ +Cheese is a Photobooth-inspired GNOME application for taking pictures and +videos from a webcam. It also includes fancy graphical effects based on the +gstreamer-backend. + +WWW: http://www.gnome.org/projects/cheese/ diff --git a/multimedia/cheese/pkg-plist b/multimedia/cheese/pkg-plist new file mode 100644 index 000000000..13619429f --- /dev/null +++ b/multimedia/cheese/pkg-plist @@ -0,0 +1,377 @@ +bin/cheese +include/cheese/cheese-avatar-chooser.h +include/cheese/cheese-camera-device-monitor.h +include/cheese/cheese-widget.h +lib/libcheese-gtk.a +lib/libcheese-gtk.la +lib/libcheese-gtk.so +lib/libcheese-gtk.so.18 +libdata/pkgconfig/cheese-gtk.pc +libexec/cheese/cheese-bugreport.sh +share/applications/cheese.desktop +%%DATADIR%%/cheese-prefs.ui +%%DATADIR%%/cheese-ui.xml +%%DATADIR%%/cheese.ui +%%DATADIR%%/effects/Hulk.png +%%DATADIR%%/effects/Mauve.png +%%DATADIR%%/effects/NoirBlanc.png +%%DATADIR%%/effects/Saturation.png +%%DATADIR%%/effects/dicetv.png +%%DATADIR%%/effects/edgetv.png +%%DATADIR%%/effects/identity.png +%%DATADIR%%/effects/shagadelictv.png +%%DATADIR%%/effects/vertigotv.png +%%DATADIR%%/effects/videoflip_h.png +%%DATADIR%%/effects/videoflip_v.png +%%DATADIR%%/effects/warptv.png +%%DATADIR%%/gtkrc +%%DATADIR%%/icons/hicolor/16x16/actions/browse-webcam-effects.png +%%DATADIR%%/icons/hicolor/16x16/actions/cheese-take-burst.png +%%DATADIR%%/icons/hicolor/16x16/actions/cheese-take-photo.png +%%DATADIR%%/icons/hicolor/22x22/actions/browse-webcam-effects.png +%%DATADIR%%/icons/hicolor/22x22/actions/cheese-take-burst.png +%%DATADIR%%/icons/hicolor/22x22/actions/cheese-take-photo.png +%%DATADIR%%/icons/hicolor/24x24/actions/browse-webcam-effects.png +%%DATADIR%%/icons/hicolor/24x24/actions/cheese-take-burst.png +%%DATADIR%%/icons/hicolor/24x24/actions/cheese-take-photo.png +%%DATADIR%%/icons/hicolor/32x32/actions/browse-webcam-effects.png +%%DATADIR%%/icons/hicolor/32x32/actions/cheese-take-burst.png +%%DATADIR%%/icons/hicolor/32x32/actions/cheese-take-photo.png +%%DATADIR%%/icons/hicolor/48x48/actions/browse-webcam-effects.png +%%DATADIR%%/icons/hicolor/48x48/actions/cheese-take-burst.png +%%DATADIR%%/icons/hicolor/48x48/actions/cheese-take-photo.png +%%DATADIR%%/icons/hicolor/scalable/actions/browse-webcam-effects.svg +%%DATADIR%%/icons/hicolor/scalable/actions/cheese-take-burst.svg +%%DATADIR%%/icons/hicolor/scalable/actions/cheese-take-photo.svg +%%DATADIR%%/pixmaps/camera-icon.svg +%%DATADIR%%/pixmaps/cheese-1.svg +%%DATADIR%%/pixmaps/cheese-2.svg +%%DATADIR%%/pixmaps/cheese-3.svg +%%DATADIR%%/pixmaps/thumbnail-frame.png +share/dbus-1/services/org.gnome.Cheese.service +%%DOCSDIR%%/AUTHORS +%%DOCSDIR%%/COPYING +%%DOCSDIR%%/ChangeLog +%%DOCSDIR%%/CheeseAvatarChooser.html +%%DOCSDIR%%/CheeseCameraDeviceMonitor.html +%%DOCSDIR%%/CheeseWidget.html +%%DOCSDIR%%/NEWS +%%DOCSDIR%%/README +%%DOCSDIR%%/api-index-full.html +%%DOCSDIR%%/ch01.html +%%DOCSDIR%%/cheese.devhelp +%%DOCSDIR%%/cheese.devhelp2 +%%DOCSDIR%%/home.png +%%DOCSDIR%%/index.html +%%DOCSDIR%%/index.sgml +%%DOCSDIR%%/left.png +%%DOCSDIR%%/object-tree.html +%%DOCSDIR%%/right.png +%%DOCSDIR%%/style.css +%%DOCSDIR%%/up.png +share/gnome/help/cheese/C/cheese.xml +share/gnome/help/cheese/C/figures/cheese-effects.jpg +share/gnome/help/cheese/C/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/C/figures/cheese-main.jpg +share/gnome/help/cheese/C/figures/cheese-preferences.jpg +share/gnome/help/cheese/C/figures/cheese-share.jpg +share/gnome/help/cheese/C/figures/cheese-wide.jpg +share/gnome/help/cheese/C/legal.xml +share/gnome/help/cheese/ca/cheese.xml +share/gnome/help/cheese/ca/figures/cheese-effects.jpg +share/gnome/help/cheese/ca/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/ca/figures/cheese-main.jpg +share/gnome/help/cheese/ca/figures/cheese-preferences.jpg +share/gnome/help/cheese/ca/figures/cheese-share.jpg +share/gnome/help/cheese/ca/figures/cheese-wide.jpg +share/gnome/help/cheese/cs/cheese.xml +share/gnome/help/cheese/cs/figures/cheese-effects.jpg +share/gnome/help/cheese/cs/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/cs/figures/cheese-main.jpg +share/gnome/help/cheese/cs/figures/cheese-preferences.jpg +share/gnome/help/cheese/cs/figures/cheese-share.jpg +share/gnome/help/cheese/cs/figures/cheese-wide.jpg +share/gnome/help/cheese/de/cheese.xml +share/gnome/help/cheese/de/figures/cheese-effects.jpg +share/gnome/help/cheese/de/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/de/figures/cheese-main.jpg +share/gnome/help/cheese/de/figures/cheese-preferences.jpg +share/gnome/help/cheese/de/figures/cheese-share.jpg +share/gnome/help/cheese/de/figures/cheese-wide.jpg +share/gnome/help/cheese/el/cheese.xml +share/gnome/help/cheese/el/figures/cheese-effects.jpg +share/gnome/help/cheese/el/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/el/figures/cheese-main.jpg +share/gnome/help/cheese/el/figures/cheese-preferences.jpg +share/gnome/help/cheese/el/figures/cheese-share.jpg +share/gnome/help/cheese/el/figures/cheese-wide.jpg +share/gnome/help/cheese/en_GB/cheese.xml +share/gnome/help/cheese/en_GB/figures/cheese-effects.jpg +share/gnome/help/cheese/en_GB/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/en_GB/figures/cheese-main.jpg +share/gnome/help/cheese/en_GB/figures/cheese-preferences.jpg +share/gnome/help/cheese/en_GB/figures/cheese-share.jpg +share/gnome/help/cheese/en_GB/figures/cheese-wide.jpg +share/gnome/help/cheese/es/cheese.xml +share/gnome/help/cheese/es/figures/cheese-effects.jpg +share/gnome/help/cheese/es/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/es/figures/cheese-main.jpg +share/gnome/help/cheese/es/figures/cheese-preferences.jpg +share/gnome/help/cheese/es/figures/cheese-share.jpg +share/gnome/help/cheese/es/figures/cheese-wide.jpg +share/gnome/help/cheese/fr/cheese.xml +share/gnome/help/cheese/fr/figures/cheese-effects.jpg +share/gnome/help/cheese/fr/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/fr/figures/cheese-main.jpg +share/gnome/help/cheese/fr/figures/cheese-preferences.jpg +share/gnome/help/cheese/fr/figures/cheese-share.jpg +share/gnome/help/cheese/fr/figures/cheese-wide.jpg +share/gnome/help/cheese/it/cheese.xml +share/gnome/help/cheese/it/figures/cheese-effects.jpg +share/gnome/help/cheese/it/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/it/figures/cheese-main.jpg +share/gnome/help/cheese/it/figures/cheese-preferences.jpg +share/gnome/help/cheese/it/figures/cheese-share.jpg +share/gnome/help/cheese/it/figures/cheese-wide.jpg +share/gnome/help/cheese/nl/cheese.xml +share/gnome/help/cheese/nl/figures/cheese-effects.jpg +share/gnome/help/cheese/nl/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/nl/figures/cheese-main.jpg +share/gnome/help/cheese/nl/figures/cheese-preferences.jpg +share/gnome/help/cheese/nl/figures/cheese-share.jpg +share/gnome/help/cheese/nl/figures/cheese-wide.jpg +share/gnome/help/cheese/oc/cheese.xml +share/gnome/help/cheese/oc/figures/cheese-effects.jpg +share/gnome/help/cheese/oc/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/oc/figures/cheese-main.jpg +share/gnome/help/cheese/oc/figures/cheese-preferences.jpg +share/gnome/help/cheese/oc/figures/cheese-share.jpg +share/gnome/help/cheese/oc/figures/cheese-wide.jpg +share/gnome/help/cheese/pt_BR/cheese.xml +share/gnome/help/cheese/pt_BR/figures/cheese-effects.jpg +share/gnome/help/cheese/pt_BR/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/pt_BR/figures/cheese-main.jpg +share/gnome/help/cheese/pt_BR/figures/cheese-preferences.jpg +share/gnome/help/cheese/pt_BR/figures/cheese-share.jpg +share/gnome/help/cheese/pt_BR/figures/cheese-wide.jpg +share/gnome/help/cheese/ru/cheese.xml +share/gnome/help/cheese/ru/figures/cheese-effects.jpg +share/gnome/help/cheese/ru/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/ru/figures/cheese-main.jpg +share/gnome/help/cheese/ru/figures/cheese-preferences.jpg +share/gnome/help/cheese/ru/figures/cheese-share.jpg +share/gnome/help/cheese/ru/figures/cheese-wide.jpg +share/gnome/help/cheese/sl/cheese.xml +share/gnome/help/cheese/sl/figures/cheese-effects.jpg +share/gnome/help/cheese/sl/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/sl/figures/cheese-main.jpg +share/gnome/help/cheese/sl/figures/cheese-preferences.jpg +share/gnome/help/cheese/sl/figures/cheese-share.jpg +share/gnome/help/cheese/sl/figures/cheese-wide.jpg +share/gnome/help/cheese/sv/cheese.xml +share/gnome/help/cheese/sv/figures/cheese-effects.jpg +share/gnome/help/cheese/sv/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/sv/figures/cheese-main.jpg +share/gnome/help/cheese/sv/figures/cheese-preferences.jpg +share/gnome/help/cheese/sv/figures/cheese-share.jpg +share/gnome/help/cheese/sv/figures/cheese-wide.jpg +share/gnome/help/cheese/th/cheese.xml +share/gnome/help/cheese/th/figures/cheese-effects.jpg +share/gnome/help/cheese/th/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/th/figures/cheese-main.jpg +share/gnome/help/cheese/th/figures/cheese-preferences.jpg +share/gnome/help/cheese/th/figures/cheese-share.jpg +share/gnome/help/cheese/th/figures/cheese-wide.jpg +share/gnome/help/cheese/zh_CN/cheese.xml +share/gnome/help/cheese/zh_CN/figures/cheese-effects.jpg +share/gnome/help/cheese/zh_CN/figures/cheese-fullscreen.jpg +share/gnome/help/cheese/zh_CN/figures/cheese-main.jpg +share/gnome/help/cheese/zh_CN/figures/cheese-preferences.jpg +share/gnome/help/cheese/zh_CN/figures/cheese-share.jpg +share/gnome/help/cheese/zh_CN/figures/cheese-wide.jpg +share/icons/hicolor/16x16/apps/cheese.png +share/icons/hicolor/22x22/apps/cheese.png +share/icons/hicolor/24x24/apps/cheese.png +share/icons/hicolor/256x256/apps/cheese.png +share/icons/hicolor/32x32/apps/cheese.png +share/icons/hicolor/48x48/apps/cheese.png +share/icons/hicolor/scalable/apps/cheese.svg +share/locale/af/LC_MESSAGES/cheese.mo +share/locale/ar/LC_MESSAGES/cheese.mo +share/locale/as/LC_MESSAGES/cheese.mo +share/locale/ast/LC_MESSAGES/cheese.mo +share/locale/be/LC_MESSAGES/cheese.mo +share/locale/be@latin/LC_MESSAGES/cheese.mo +share/locale/bg/LC_MESSAGES/cheese.mo +share/locale/bn/LC_MESSAGES/cheese.mo +share/locale/bn_IN/LC_MESSAGES/cheese.mo +share/locale/ca/LC_MESSAGES/cheese.mo +share/locale/ca@valencia/LC_MESSAGES/cheese.mo +share/locale/cs/LC_MESSAGES/cheese.mo +share/locale/da/LC_MESSAGES/cheese.mo +share/locale/de/LC_MESSAGES/cheese.mo +share/locale/dz/LC_MESSAGES/cheese.mo +share/locale/el/LC_MESSAGES/cheese.mo +share/locale/en@shaw/LC_MESSAGES/cheese.mo +share/locale/en_GB/LC_MESSAGES/cheese.mo +share/locale/es/LC_MESSAGES/cheese.mo +share/locale/et/LC_MESSAGES/cheese.mo +share/locale/eu/LC_MESSAGES/cheese.mo +share/locale/fi/LC_MESSAGES/cheese.mo +share/locale/fr/LC_MESSAGES/cheese.mo +share/locale/ga/LC_MESSAGES/cheese.mo +share/locale/gl/LC_MESSAGES/cheese.mo +share/locale/gu/LC_MESSAGES/cheese.mo +share/locale/he/LC_MESSAGES/cheese.mo +share/locale/hi/LC_MESSAGES/cheese.mo +share/locale/hr/LC_MESSAGES/cheese.mo +share/locale/hu/LC_MESSAGES/cheese.mo +share/locale/id/LC_MESSAGES/cheese.mo +share/locale/it/LC_MESSAGES/cheese.mo +share/locale/ja/LC_MESSAGES/cheese.mo +share/locale/ka/LC_MESSAGES/cheese.mo +share/locale/kn/LC_MESSAGES/cheese.mo +share/locale/ko/LC_MESSAGES/cheese.mo +share/locale/ku/LC_MESSAGES/cheese.mo +share/locale/lt/LC_MESSAGES/cheese.mo +share/locale/lv/LC_MESSAGES/cheese.mo +share/locale/mai/LC_MESSAGES/cheese.mo +share/locale/mk/LC_MESSAGES/cheese.mo +share/locale/ml/LC_MESSAGES/cheese.mo +share/locale/mr/LC_MESSAGES/cheese.mo +share/locale/ms/LC_MESSAGES/cheese.mo +share/locale/nb/LC_MESSAGES/cheese.mo +share/locale/nds/LC_MESSAGES/cheese.mo +share/locale/nl/LC_MESSAGES/cheese.mo +share/locale/nn/LC_MESSAGES/cheese.mo +share/locale/oc/LC_MESSAGES/cheese.mo +share/locale/or/LC_MESSAGES/cheese.mo +share/locale/pa/LC_MESSAGES/cheese.mo +share/locale/pl/LC_MESSAGES/cheese.mo +share/locale/ps/LC_MESSAGES/cheese.mo +share/locale/pt/LC_MESSAGES/cheese.mo +share/locale/pt_BR/LC_MESSAGES/cheese.mo +share/locale/ro/LC_MESSAGES/cheese.mo +share/locale/ru/LC_MESSAGES/cheese.mo +share/locale/sl/LC_MESSAGES/cheese.mo +share/locale/sq/LC_MESSAGES/cheese.mo +share/locale/sr/LC_MESSAGES/cheese.mo +share/locale/sr@latin/LC_MESSAGES/cheese.mo +share/locale/sv/LC_MESSAGES/cheese.mo +share/locale/ta/LC_MESSAGES/cheese.mo +share/locale/te/LC_MESSAGES/cheese.mo +share/locale/th/LC_MESSAGES/cheese.mo +share/locale/tr/LC_MESSAGES/cheese.mo +share/locale/uk/LC_MESSAGES/cheese.mo +share/locale/vi/LC_MESSAGES/cheese.mo +share/locale/zh_CN/LC_MESSAGES/cheese.mo +share/locale/zh_HK/LC_MESSAGES/cheese.mo +share/locale/zh_TW/LC_MESSAGES/cheese.mo +share/omf/cheese/cheese-C.omf +share/omf/cheese/cheese-ca.omf +share/omf/cheese/cheese-cs.omf +share/omf/cheese/cheese-de.omf +share/omf/cheese/cheese-el.omf +share/omf/cheese/cheese-en_GB.omf +share/omf/cheese/cheese-es.omf +share/omf/cheese/cheese-fr.omf +share/omf/cheese/cheese-it.omf +share/omf/cheese/cheese-nl.omf +share/omf/cheese/cheese-oc.omf +share/omf/cheese/cheese-pt_BR.omf +share/omf/cheese/cheese-ru.omf +share/omf/cheese/cheese-sl.omf +share/omf/cheese/cheese-sv.omf +share/omf/cheese/cheese-th.omf +share/omf/cheese/cheese-zh_CN.omf +@dirrm share/omf/cheese +@dirrmtry share/icons/hicolor/256x256/apps +@dirrmtry share/icons/hicolor/256x256 +@dirrm share/gnome/help/cheese/zh_CN/figures +@dirrm share/gnome/help/cheese/zh_CN +@dirrm share/gnome/help/cheese/th/figures +@dirrm share/gnome/help/cheese/th +@dirrm share/gnome/help/cheese/sv/figures +@dirrm share/gnome/help/cheese/sv +@dirrm share/gnome/help/cheese/sl/figures +@dirrm share/gnome/help/cheese/sl +@dirrm share/gnome/help/cheese/ru/figures +@dirrm share/gnome/help/cheese/ru +@dirrm share/gnome/help/cheese/pt_BR/figures +@dirrm share/gnome/help/cheese/pt_BR +@dirrm share/gnome/help/cheese/oc/figures +@dirrm share/gnome/help/cheese/oc +@dirrm share/gnome/help/cheese/nl/figures +@dirrm share/gnome/help/cheese/nl +@dirrm share/gnome/help/cheese/it/figures +@dirrm share/gnome/help/cheese/it +@dirrm share/gnome/help/cheese/fr/figures +@dirrm share/gnome/help/cheese/fr +@dirrm share/gnome/help/cheese/es/figures +@dirrm share/gnome/help/cheese/es +@dirrm share/gnome/help/cheese/en_GB/figures +@dirrm share/gnome/help/cheese/en_GB +@dirrm share/gnome/help/cheese/el/figures +@dirrm share/gnome/help/cheese/el +@dirrm share/gnome/help/cheese/de/figures +@dirrm share/gnome/help/cheese/de +@dirrm share/gnome/help/cheese/cs/figures +@dirrm share/gnome/help/cheese/cs +@dirrm share/gnome/help/cheese/ca/figures +@dirrm share/gnome/help/cheese/ca +@dirrm share/gnome/help/cheese/C/figures +@dirrm share/gnome/help/cheese/C +@dirrm share/gnome/help/cheese +@dirrm %%DOCSDIR%% +@dirrm %%DATADIR%%/pixmaps +@dirrm %%DATADIR%%/icons/hicolor/scalable/actions +@dirrm %%DATADIR%%/icons/hicolor/scalable +@dirrm %%DATADIR%%/icons/hicolor/48x48/actions +@dirrm %%DATADIR%%/icons/hicolor/48x48 +@dirrm %%DATADIR%%/icons/hicolor/32x32/actions +@dirrm %%DATADIR%%/icons/hicolor/32x32 +@dirrm %%DATADIR%%/icons/hicolor/24x24/actions +@dirrm %%DATADIR%%/icons/hicolor/24x24 +@dirrm %%DATADIR%%/icons/hicolor/22x22/actions +@dirrm %%DATADIR%%/icons/hicolor/22x22 +@dirrm %%DATADIR%%/icons/hicolor/16x16/actions +@dirrm %%DATADIR%%/icons/hicolor/16x16 +@dirrm %%DATADIR%%/icons/hicolor +@dirrm %%DATADIR%%/icons +@dirrm %%DATADIR%%/effects +@dirrm %%DATADIR%% +@dirrmtry share/applications +@dirrm libexec/cheese +@dirrm include/cheese +@dirrmtry share/locale/zh_HK/LC_MESSAGES +@dirrmtry share/locale/zh_HK +@dirrmtry share/locale/te/LC_MESSAGES +@dirrmtry share/locale/te +@dirrmtry share/locale/sr@latin/LC_MESSAGES +@dirrmtry share/locale/sr@latin +@dirrmtry share/locale/ps/LC_MESSAGES +@dirrmtry share/locale/ps +@dirrmtry share/locale/oc/LC_MESSAGES +@dirrmtry share/locale/oc +@dirrmtry share/locale/nds/LC_MESSAGES +@dirrmtry share/locale/nds +@dirrmtry share/locale/mr/LC_MESSAGES +@dirrmtry share/locale/mr +@dirrmtry share/locale/mai/LC_MESSAGES +@dirrmtry share/locale/mai +@dirrmtry share/locale/ku/LC_MESSAGES +@dirrmtry share/locale/ku +@dirrmtry share/locale/en@shaw/LC_MESSAGES +@dirrmtry share/locale/en@shaw +@dirrmtry share/locale/dz/LC_MESSAGES +@dirrmtry share/locale/dz +@dirrmtry share/locale/ca@valencia/LC_MESSAGES +@dirrmtry share/locale/ca@valencia +@dirrmtry share/locale/bn_IN/LC_MESSAGES +@dirrmtry share/locale/bn_IN +@dirrmtry share/locale/be@latin/LC_MESSAGES +@dirrmtry share/locale/be@latin +@dirrmtry share/locale/ast/LC_MESSAGES +@dirrmtry share/locale/ast +@dirrmtry share/locale/as/LC_MESSAGES +@dirrmtry share/locale/as  | 
