diff options
-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 |