aboutsummaryrefslogtreecommitdiffstats
path: root/multimedia/cheese
diff options
context:
space:
mode:
authorkwm <kwm@FreeBSD.org>2010-05-11 05:19:08 +0800
committerkwm <kwm@FreeBSD.org>2010-05-11 05:19:08 +0800
commit6a2a890c5cd397f9f0287409c2aa0244d50f3573 (patch)
treefc02bcba8bfa155b5cf452d6bafe1cb06aca4848 /multimedia/cheese
parent0e415a93a0424a4b284c88c39b19d93d80b66c8a (diff)
downloadfreebsd-ports-gnome-6a2a890c5cd397f9f0287409c2aa0244d50f3573.tar.gz
freebsd-ports-gnome-6a2a890c5cd397f9f0287409c2aa0244d50f3573.tar.zst
freebsd-ports-gnome-6a2a890c5cd397f9f0287409c2aa0244d50f3573.zip
Presenting GNOME 2.30.1 for FreeBSD. The offical release notes for this
release can be found at http://library.gnome.org/misc/release-notes/2.30/ . This release brings initial PackageKit support, Upower (replaces power management part of hal), cuse4bsd integration with HAL and cheese, and a faster Evolution. Sadly GNOME 2.30.x will be the last release with FreeBSD 6.X support. This will also be the last of the 2.x releases. The next release will be the highly-anticipated GNOME 3.0 which will bring with it a new UI experience. Currently, there are a few bugs with GNOME 2.30 that may be of note for our users. Be sure to consult the UPGRADING note or the 2.30 upgrade FAQ at http://www.freebsd.org/gnome/docs/faq230.html for specific upgrading instructions, and the up-to-date list of known issues. This release features commits by avl, ahze, bland, marcus, mezz, and myself. The FreeBSD GNOME Team would like to thank Anders F Bjorklund for doing the initual packagekit porting. And the following contributors & testers for there help with this release: Eric L. Chen Vladimir Grebenschikov Sergio de Almeida Lenzi DomiX walder crsd Kevin Oberman Michal Varga Pavel Plesov Bapt kevin and ITetcu for two exp-run PR: ports/143852 ports/145347 ports/144980 ports/145830 ports/145511
Diffstat (limited to 'multimedia/cheese')
-rw-r--r--multimedia/cheese/Makefile12
-rw-r--r--multimedia/cheese/distinfo6
-rw-r--r--multimedia/cheese/files/patch-configure225
-rw-r--r--multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c436
-rw-r--r--multimedia/cheese/files/patch-src_cheese-webcam.c40
-rw-r--r--multimedia/cheese/pkg-plist60
6 files changed, 718 insertions, 61 deletions
diff --git a/multimedia/cheese/Makefile b/multimedia/cheese/Makefile
index 3e45d97937c2..ea3c7fd8b705 100644
--- a/multimedia/cheese/Makefile
+++ b/multimedia/cheese/Makefile
@@ -3,12 +3,12 @@
# Whom: FreeBSD GNOME Team <gnome@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/multimedia/cheese/Makefile,v 1.44 2009/10/19 20:24:12 kwm Exp $
+# $MCom: ports/multimedia/cheese/Makefile,v 1.55 2010/04/17 22:01:34 marcus Exp $
#
PORTNAME= cheese
-PORTVERSION= 2.28.1
-PORTREVISION= 2
+PORTVERSION= 2.30.0
+PORTREVISION= 3
CATEGORIES= multimedia gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
@@ -18,15 +18,19 @@ 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
+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"
diff --git a/multimedia/cheese/distinfo b/multimedia/cheese/distinfo
index 0700030e84f3..6a244150f7d0 100644
--- a/multimedia/cheese/distinfo
+++ b/multimedia/cheese/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/cheese-2.28.1.tar.bz2) = 9accb0d6fa3f1f7644bade886c6078c3
-SHA256 (gnome2/cheese-2.28.1.tar.bz2) = a1a2bb43c161829cbd1f87753abf26ed6d5fb79cd1ab9723dd65865d33950df4
-SIZE (gnome2/cheese-2.28.1.tar.bz2) = 4852259
+MD5 (gnome2/cheese-2.30.0.tar.bz2) = bdcd6f220749ec7ec1a7d4b4726cac78
+SHA256 (gnome2/cheese-2.30.0.tar.bz2) = 7eab2c736abc1a333eb3dd7fb5c888c08f2dc0f34443b5801a7dfc581101aab9
+SIZE (gnome2/cheese-2.30.0.tar.bz2) = 5275469
diff --git a/multimedia/cheese/files/patch-configure b/multimedia/cheese/files/patch-configure
new file mode 100644
index 000000000000..f0bc10f9740d
--- /dev/null
+++ b/multimedia/cheese/files/patch-configure
@@ -0,0 +1,225 @@
+--- configure.orig 2010-04-16 22:54:43.000000000 -0400
++++ configure 2010-04-16 22:56:36.000000000 -0400
+@@ -800,8 +800,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
+@@ -1008,8 +1008,8 @@ LIBS
+ CPPFLAGS
+ CPP
+ PKG_CONFIG
+-UDEV_CFLAGS
+-UDEV_LIBS
++HAL_CFLAGS
++HAL_LIBS
+ CHEESE_CFLAGS
+ CHEESE_LIBS'
+
+@@ -1688,8 +1688,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
+@@ -15729,38 +15729,38 @@ LIBRSVG_REQUIRED=2.18.0
+ # Check for udev
+ #*******************************************************************************
+
+-UDEV_PKG=
++HAL_PKG=
+
+ pkg_failed=no
+-{ $as_echo "$as_me:$LINENO: checking for UDEV" >&5
+-$as_echo_n "checking for UDEV... " >&6; }
++{ $as_echo "$as_me:$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:$LINENO: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5
++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"hal\"") >&5
++ ($PKG_CONFIG --exists --print-errors "hal") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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:$LINENO: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5
++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"hal\"") >&5
++ ($PKG_CONFIG --exists --print-errors "hal") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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
+@@ -15778,29 +15778,29 @@ 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:$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:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+
+ cat >>confdefs.h <<\_ACEOF
+-#define HAVE_UDEV 1
++#define HAVE_HAL 1
+ _ACEOF
+
+- UDEV_PKG=gudev-1.0
++ HAL_PKG=hal
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking operating system" >&5
+@@ -15815,7 +15815,7 @@ _ACEOF
+
+ { $as_echo "$as_me:$LINENO: result: Linux" >&5
+ $as_echo "Linux" >&6; }
+- if test x$UDEV_PKG = "x" ; then
++ if test x$HAL_PKG = "x" ; then
+ { { $as_echo "$as_me:$LINENO: error: libgudev is required under Linux and not installed" >&5
+ $as_echo "$as_me: error: libgudev is required under Linux and not installed" >&2;}
+ { (exit 1); exit 1; }; }
+@@ -16213,7 +16213,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 \
+@@ -16229,7 +16229,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:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -16248,7 +16248,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
+@@ -16274,7 +16274,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 \
+@@ -16290,7 +16290,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:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -16309,7 +16309,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
+@@ -16342,7 +16342,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 \
+@@ -16359,7 +16359,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
+@@ -16379,7 +16379,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
+
+@@ -16405,7 +16405,7 @@ $as_echo "$as_me: error: Package require
+ 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 000000000000..05da52bbd4f6
--- /dev/null
+++ b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c
@@ -0,0 +1,436 @@
+--- libcheese/cheese-camera-device-monitor.c.orig 2010-03-29 16:27:42.000000000 -0400
++++ libcheese/cheese-camera-device-monitor.c 2010-04-17 17:57:57.000000000 -0400
+@@ -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,79 @@ 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 (vendor, 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");
++ GST_WARNING ("error getting V4L device for %s: %s: %s", udi, error.name, error.message);
++ dbus_error_free (&error);
++ libhal_free_string (product_name);
+ return;
+ }
+
+- /* 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)
++cheese_camera_device_monitor_removed (LibHalContext *ctx,
++ const char *udi)
+ {
+- g_signal_emit (monitor, monitor_signals[REMOVED], 0,
+- g_udev_device_get_property (udevice, "DEVPATH"));
+-}
++ 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 +175,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)
++ GST_INFO ("Probing devices with HAL...");
++
++ if (priv->hal_ctx == NULL)
+ return;
+
+- GST_INFO ("Probing devices with udev...");
++ dbus_error_init (&error);
+
+- devices = g_udev_client_query_by_subsystem (priv->client, "video4linux");
++ udis = libhal_find_device_by_capability (priv->hal_ctx, "video4linux", &num_udis, &error);
+
+- /* Initialize camera structures */
+- for (l = devices; l != NULL; l = l->next)
++ 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 +308,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/files/patch-src_cheese-webcam.c b/multimedia/cheese/files/patch-src_cheese-webcam.c
deleted file mode 100644
index a0b5afd21161..000000000000
--- a/multimedia/cheese/files/patch-src_cheese-webcam.c
+++ /dev/null
@@ -1,40 +0,0 @@
---- src/cheese-webcam.c.orig 2008-09-09 11:59:18.000000000 -0400
-+++ src/cheese-webcam.c 2008-09-09 12:01:14.000000000 -0400
-@@ -301,7 +301,9 @@ cheese_webcam_get_video_devices_from_hal
- {
- char *device;
- char *gstreamer_src, *product_name;
-+#ifdef VIDIOC_QUERYCAP
- struct v4l2_capability v2cap;
-+#endif
- struct video_capability v1cap;
-
- device = libhal_device_get_property_string (hal_ctx, udis[i], "video4linux.device", &error);
-@@ -327,7 +329,11 @@ cheese_webcam_get_video_devices_from_hal
- libhal_free_string (device);
- continue;
- }
-+#ifdef VIDIOC_QUERYCAP
- ok = ioctl (fd, VIDIOC_QUERYCAP, &v2cap);
-+#else
-+ ok = -1;
-+#endif
- if (ok < 0)
- {
- ok = ioctl (fd, VIDIOCGCAP, &v1cap);
-@@ -346,6 +352,7 @@ cheese_webcam_get_video_devices_from_hal
- }
- else
- {
-+#ifdef VIDIOC_QUERYCAP
- guint cap = v2cap.capabilities;
- g_print ("Detected v4l2 device: %s\n", v2cap.card);
- g_print ("Driver: %s, version: %d\n", v2cap.driver, v2cap.version);
-@@ -361,6 +368,7 @@ cheese_webcam_get_video_devices_from_hal
- }
- gstreamer_src = "v4l2src";
- product_name = (char *) v2cap.card;
-+#endif
- }
-
- priv->webcam_devices[priv->num_webcam_devices].hal_udi = g_strdup (udis[i]);
diff --git a/multimedia/cheese/pkg-plist b/multimedia/cheese/pkg-plist
index 361917ff7467..53ee71925ee2 100644
--- a/multimedia/cheese/pkg-plist
+++ b/multimedia/cheese/pkg-plist
@@ -1,4 +1,12 @@
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
@@ -32,25 +40,35 @@ share/applications/cheese.desktop
%%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%%/icons/hicolor/scalable/actions/browse-webcam-effects.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
-%%DATADIR%%/sounds/shutter0.ogg
-%%DATADIR%%/sounds/shutter1.ogg
-%%DATADIR%%/sounds/shutter2.ogg
-%%DATADIR%%/sounds/shutter3.ogg
-%%DATADIR%%/sounds/shutter4.ogg
share/dbus-1/services/org.gnome.Cheese.service
-%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
-%%PORTDOCS%%%%DOCSDIR%%/COPYING
-%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
-%%PORTDOCS%%%%DOCSDIR%%/NEWS
-%%PORTDOCS%%%%DOCSDIR%%/README
+%%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
@@ -66,6 +84,13 @@ 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
@@ -180,6 +205,7 @@ 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
@@ -205,6 +231,7 @@ share/locale/mk/LC_MESSAGES/cheese.mo
share/locale/ml/LC_MESSAGES/cheese.mo
share/locale/mr/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
@@ -232,6 +259,7 @@ 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
@@ -274,13 +302,14 @@ share/omf/cheese/cheese-zh_CN.omf
@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
%%PORTDOCS%%@dirrm %%DOCSDIR%%
-@dirrm %%DATADIR%%/sounds
@dirrm %%DATADIR%%/pixmaps
@dirrm %%DATADIR%%/icons/hicolor/scalable/actions
@dirrm %%DATADIR%%/icons/hicolor/scalable
@@ -300,6 +329,7 @@ share/omf/cheese/cheese-zh_CN.omf
@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
@@ -310,12 +340,16 @@ share/omf/cheese/cheese-zh_CN.omf
@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
@@ -324,8 +358,6 @@ share/omf/cheese/cheese-zh_CN.omf
@dirrmtry share/locale/bn_IN
@dirrmtry share/locale/be@latin/LC_MESSAGES
@dirrmtry share/locale/be@latin
-@dirrmtry share/locale/be/LC_MESSAGES
-@dirrmtry share/locale/be
@dirrmtry share/locale/ast/LC_MESSAGES
@dirrmtry share/locale/ast
@dirrmtry share/locale/as/LC_MESSAGES