diff options
author | Koop Mast <kwm@FreeBSD.org> | 2016-02-14 18:57:53 +0000 |
---|---|---|
committer | Koop Mast <kwm@FreeBSD.org> | 2016-02-14 18:57:53 +0000 |
commit | b93a80c99281466281db26011356c75bd54ea36c (patch) | |
tree | cb5a8a1108829deee66dbb334ff2a733162448c6 /multimedia/cheese | |
parent | b78527376a1d11bef820d5e9fe86d3c524ea6acf (diff) | |
download | ports-b93a80c99281466281db26011356c75bd54ea36c.tar.gz ports-b93a80c99281466281db26011356c75bd54ea36c.zip |
The FreeBSD GNOME team proudly presents GNOME 3.18 for FreeBSD.
The offical GNOME 3.18 release notes can be found at
https://help.gnome.org/misc/release-notes/3.18/
This update doesn't contain the glib/gtk c++ bindings which will
be done in a another update due to the requirement on c++11 and the
amount of fallout this probably will give.
GDM is still at version 3.16 due to some issues.
Bump mate-themes to use the gtk 3.18 version of the themes.
Thanks to Antoine Brodin for running the exp-runs.
This release was made possible by the following people:
Gustau Perez
Ting-Wei_Lan
PR: 207006
Notes
Notes:
svn path=/head/; revision=408881
Diffstat (limited to 'multimedia/cheese')
-rw-r--r-- | multimedia/cheese/Makefile | 6 | ||||
-rw-r--r-- | multimedia/cheese/distinfo | 4 | ||||
-rw-r--r-- | multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c | 290 | ||||
-rw-r--r-- | multimedia/cheese/pkg-message | 8 | ||||
-rw-r--r-- | multimedia/cheese/pkg-plist | 35 |
5 files changed, 43 insertions, 300 deletions
diff --git a/multimedia/cheese/Makefile b/multimedia/cheese/Makefile index 6578613de053..32055d6c112d 100644 --- a/multimedia/cheese/Makefile +++ b/multimedia/cheese/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= cheese -PORTVERSION= 3.16.1 +PORTVERSION= 3.18.1 CATEGORIES= multimedia gnome MASTER_SITES= GNOME DIST_SUBDIR= gnome3 @@ -17,12 +17,12 @@ BUILD_DEPENDS= v4l_compat>=0:${PORTSDIR}/multimedia/v4l_compat \ LIB_DEPENDS= libcanberra-gtk3.so:${PORTSDIR}/audio/libcanberra-gtk3 \ libhal.so:${PORTSDIR}/sysutils/hal \ libclutter-gtk-1.0.so:${PORTSDIR}/graphics/clutter-gtk3 \ - libclutter-gst-2.0.so:${PORTSDIR}/multimedia/clutter-gst + libclutter-gst-3.0.so:${PORTSDIR}/multimedia/clutter-gst3 RUN_DEPENDS= gnome-video-effects>=0:${PORTSDIR}/graphics/gnome-video-effects PORTSCOUT= limitw:1,even -USES= gettext gmake libtool pathfix pkgconfig tar:xz +USES= gettext gmake gnome libtool pathfix pkgconfig tar:xz USE_GNOME= intlhack evolutiondataserver3 librsvg2 \ gnomedesktop3 libxml2:build introspection:build USE_XORG= xxf86vm x11 diff --git a/multimedia/cheese/distinfo b/multimedia/cheese/distinfo index 3f84e604e1b0..e1b8910cb3e1 100644 --- a/multimedia/cheese/distinfo +++ b/multimedia/cheese/distinfo @@ -1,2 +1,2 @@ -SHA256 (gnome3/cheese-3.16.1.tar.xz) = 44622f6ad6d8703b22c6d40219ae317959495ccc9994b563b324592933ff90a0 -SIZE (gnome3/cheese-3.16.1.tar.xz) = 1823864 +SHA256 (gnome3/cheese-3.18.1.tar.xz) = fc9d8798b1f0c6b35731f063869a32c6910bab6d0386b9ea36386ebda0d57177 +SIZE (gnome3/cheese-3.18.1.tar.xz) = 1829408 diff --git a/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c deleted file mode 100644 index 995cb5d50cbb..000000000000 --- a/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c +++ /dev/null @@ -1,290 +0,0 @@ ---- libcheese/cheese-camera-device-monitor.c.orig 2012-08-22 21:04:40.000000000 +0200 -+++ libcheese/cheese-camera-device-monitor.c 2013-09-22 23:12:35.072353163 +0200 -@@ -33,6 +33,14 @@ - #include <fcntl.h> - #include <unistd.h> - #include <sys/ioctl.h> -+ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -+ #include <errno.h> -+ #include <sys/param.h> -+ #include <sys/types.h> -+ #include <sys/socket.h> -+ #include <sys/un.h> -+ #include <linux/videodev.h> -+ #endif - #if USE_SYS_VIDEOIO_H > 0 - #include <sys/types.h> - #include <sys/videoio.h> -@@ -302,6 +310,220 @@ - g_list_free (devices); - } - -+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -+static void cheese_camera_device_monitor_init_event (CheeseCameraDeviceMonitor *monitor); -+static gboolean cheese_camera_device_monitor_is_camera (const char *devname); -+ -+static gboolean cheese_camera_device_monitor_event_inited = FALSE; -+ -+static gboolean -+cheese_camera_device_monitor_is_camera (const char *devname){ -+ gboolean is_camera = FALSE; -+ int fd; -+ struct v4l2_capability v2cap; -+ g_return_val_if_fail (devname != NULL, FALSE); -+ -+ fd = open (devname, O_RDONLY); -+ if (fd < 0) -+ { -+ GST_WARNING("Failed to query: %s", devname); -+ return FALSE; -+ } -+ else{ -+ if (ioctl (fd, VIDIOC_QUERYCAP, &v2cap) == 0) -+ { -+ is_camera = ((v2cap.capabilities & 0x00000001)==1); -+ } -+ else{ -+ GST_WARNING("Failed to get product name for %s: %s", devname, -+ g_strerror (errno)); -+ } -+ } -+ -+ close (fd); -+ -+ return is_camera; -+} -+ -+static char * -+cheese_camera_device_monitor_get_product (const char *devname) -+{ -+ int fd; -+ struct v4l2_capability v2cap; -+ char *product = NULL; -+ -+ g_return_val_if_fail (devname != NULL, NULL); -+ -+ fd = open (devname, O_RDONLY); -+ if (fd < 0) -+ { -+ GST_WARNING("Failed to get product name for %s: %s", devname, -+ g_strerror (errno)); -+ return NULL; -+ } -+ -+ if (ioctl (fd, VIDIOC_QUERYCAP, &v2cap) == 0) -+ { -+ product = g_strdup ((const char *) v2cap.card); -+ } -+ else -+ { -+ GST_WARNING("Failed to get product name for %s: %s", devname, -+ g_strerror (errno)); -+ } -+ -+ close (fd); -+ -+ return product; -+} -+ -+static void -+cheese_camera_device_monitor_process_event (const char *event, -+ CheeseCameraDeviceMonitor *monitor) -+{ -+ g_return_if_fail (event != NULL); -+ -+ GST_INFO ("Received devd event: %s", event); -+ -+ switch (event[0]) -+ { -+ case '!': -+ { -+ GRegex *rex; -+ GMatchInfo *info; -+ -+ rex = g_regex_new ("subsystem=CDEV type=(CREATE|DESTROY) cdev=(video[0-9]+)", 0, 0, NULL); -+ if (g_regex_match (rex, event, 0, &info)) -+ { -+ char *devname, *type, *vdev, *product = NULL; -+ CheeseCameraDevice *device; -+ GError *error = NULL; -+ -+ type = g_match_info_fetch (info, 1); -+ vdev = g_match_info_fetch (info, 2); -+ -+ devname = g_strdup_printf ("/dev/%s", vdev); -+ -+ if (g_strcmp0 (type, "DESTROY") == 0) -+ { -+ g_signal_emit (monitor, monitor_signals[REMOVED], 0, -+ devname); -+ } -+ else -+ { -+ if(cheese_camera_device_monitor_is_camera (devname)) -+ { -+ product = cheese_camera_device_monitor_get_product (devname); -+ if (product == NULL) -+ product = g_strdup ("WebCamd Device"); -+ device = cheese_camera_device_new (devname, devname, -+ product, -+ 2, -+ &error); -+ if (device == NULL) -+ GST_WARNING ("Device initialization for %s failed: %s", -+ devname, -+ (error != NULL) ? error->message : "Unknown reason"); -+ g_signal_emit (monitor, monitor_signals[ADDED], 0, device); -+ } -+ -+ g_free (product); -+ } -+ g_free (devname); -+ g_free (vdev); -+ g_free (type); -+ } -+ g_match_info_free (info); -+ g_regex_unref (rex); -+ break; -+ } -+ default: -+ break; -+ } -+} -+ -+static gboolean -+cheese_camera_device_monitor_event_cb (GIOChannel *source, -+ GIOCondition condition, -+ gpointer user_data) -+{ -+ char *event; -+ gsize terminator; -+ GIOStatus status; -+ CheeseCameraDeviceMonitor *monitor; -+ -+ monitor = (CheeseCameraDeviceMonitor *) user_data; -+ -+ status = g_io_channel_read_line (source, &event, NULL, &terminator, NULL); -+ if (status == G_IO_STATUS_NORMAL) -+ { -+ event[terminator] = 0; -+ cheese_camera_device_monitor_process_event (event, monitor); -+ g_free (event); -+ } -+ else -+ { -+ if (cheese_camera_device_monitor_event_inited) -+ { -+ int fd; -+ -+ cheese_camera_device_monitor_init_event (monitor); -+ fd = g_io_channel_unix_get_fd (source); -+ g_io_channel_shutdown (source, FALSE, NULL); -+ close (fd); -+ -+ return FALSE; -+ } -+ } -+ -+ return TRUE; -+} -+ -+void -+cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor) -+{ -+ GDir *dir; -+ GError *error = NULL; -+ const char *fname; -+ -+ dir = g_dir_open ("/dev", 0, &error); -+ if (dir == NULL) -+ { -+ GST_WARNING ("Failed to open /dev for reading: %s", -+ (error != NULL) ? error->message : "Unknown error"); -+ return; -+ } -+ -+ while ((fname = g_dir_read_name (dir)) != NULL) -+ { -+ if ( strncmp (fname, "video", strlen ("video")) == 0) -+ { -+ char *devname, *product; -+ -+ devname = g_strdup_printf ("/dev/%s", fname); -+ if (cheese_camera_device_monitor_is_camera (devname)) -+ { -+ CheeseCameraDevice *device; -+ GError *derr = NULL; -+ -+ product = cheese_camera_device_monitor_get_product (devname); -+ if (product == NULL) -+ product = g_strdup ("WebCamd Device"); -+ -+ device = cheese_camera_device_new (devname, devname, product, 2, &derr); -+ if (device == NULL) -+ GST_WARNING ("Device initialization for %s failed: %s", devname, -+ (derr != NULL) ? derr->message : "Unknown reason"); -+ -+ g_signal_emit (monitor, monitor_signals[ADDED], 0, device); -+ -+ g_free (product); -+ } -+ g_free (devname); -+ } -+ } -+ g_dir_close (dir); -+} - #else /* HAVE_UDEV */ - void - cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor) -@@ -430,6 +652,42 @@ - g_type_class_add_private (klass, sizeof (CheeseCameraDeviceMonitorPrivate)); - } - -+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -+static void -+cheese_camera_device_monitor_init_event (CheeseCameraDeviceMonitor *monitor) -+{ -+ int event_fd; -+ struct sockaddr_un addr; -+ -+ event_fd = socket (PF_UNIX, SOCK_STREAM, 0); -+ if (event_fd < 0) -+ { -+ GST_WARNING ("Failed to create devd socket: %s", g_strerror (errno)); -+ cheese_camera_device_monitor_event_inited = FALSE; -+ return; -+ } -+ -+ addr.sun_family = AF_UNIX; -+ strncpy (addr.sun_path, "/var/run/devd.pipe", sizeof (addr.sun_path)); -+ if (connect (event_fd, (struct sockaddr *) &addr, sizeof (addr)) == 0) -+ { -+ GIOChannel *channel; -+ -+ channel = g_io_channel_unix_new (event_fd); -+ g_io_add_watch (channel, G_IO_IN, cheese_camera_device_monitor_event_cb, monitor); -+ g_io_channel_unref (channel); -+ cheese_camera_device_monitor_event_inited = TRUE; -+ } -+ else -+ { -+ GST_WARNING("Failed to connect to /var/run/devd.pipe: %s", -+ g_strerror (errno)); -+ close (event_fd); -+ cheese_camera_device_monitor_event_inited = FALSE; -+ } -+} -+#endif -+ - static void - cheese_camera_device_monitor_init (CheeseCameraDeviceMonitor *monitor) - { -@@ -440,6 +698,8 @@ - priv->client = g_udev_client_new (subsystems); - g_signal_connect (G_OBJECT (priv->client), "uevent", - G_CALLBACK (cheese_camera_device_monitor_uevent_cb), monitor); -+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -+ cheese_camera_device_monitor_init_event (monitor); - #endif /* HAVE_UDEV */ - } - diff --git a/multimedia/cheese/pkg-message b/multimedia/cheese/pkg-message new file mode 100644 index 000000000000..fd601c051bf4 --- /dev/null +++ b/multimedia/cheese/pkg-message @@ -0,0 +1,8 @@ + +For cheese to work, webcamd needs to be running and the user which wants +to run cheese needs to be added to the webcamd group. + +This can be done by: + +# pw groupmod webcamd -m jerry + diff --git a/multimedia/cheese/pkg-plist b/multimedia/cheese/pkg-plist index a0d24b07f419..ff13851ca4a3 100644 --- a/multimedia/cheese/pkg-plist +++ b/multimedia/cheese/pkg-plist @@ -11,11 +11,11 @@ include/cheese/cheese-widget.h include/cheese/cheese.h lib/girepository-1.0/Cheese-3.0.typelib lib/libcheese-gtk.so -lib/libcheese-gtk.so.23 -lib/libcheese-gtk.so.23.1.23 +lib/libcheese-gtk.so.25 +lib/libcheese-gtk.so.25.0.3 lib/libcheese.so -lib/libcheese.so.7 -lib/libcheese.so.7.0.39 +lib/libcheese.so.8 +lib/libcheese.so.8.0.3 libdata/pkgconfig/cheese-gtk.pc libdata/pkgconfig/cheese.pc libexec/gnome-camera-service @@ -50,7 +50,6 @@ share/gtk-doc/html/cheese/cheese.html share/gtk-doc/html/cheese/cheese_architecture.png share/gtk-doc/html/cheese/home.png share/gtk-doc/html/cheese/index.html -share/gtk-doc/html/cheese/index.sgml share/gtk-doc/html/cheese/left-insensitive.png share/gtk-doc/html/cheese/left.png share/gtk-doc/html/cheese/libcheese-gtk.html @@ -337,6 +336,31 @@ share/help/id/cheese/pref-fullscreen.page share/help/id/cheese/pref-image-properties.page share/help/id/cheese/pref-resolution.page share/help/id/cheese/video-record.page +share/help/ko/cheese/burst-mode.page +share/help/ko/cheese/effects-apply.page +share/help/ko/cheese/figures/cheese-delete.png +share/help/ko/cheese/figures/cheese-effects.png +share/help/ko/cheese/figures/cheese-introduction.png +share/help/ko/cheese/figures/cheese-record.png +share/help/ko/cheese/figures/cheese-save.png +share/help/ko/cheese/figures/cheese-take.png +share/help/ko/cheese/figures/cheese.png +share/help/ko/cheese/figures/effects.png +share/help/ko/cheese/figures/image-properties.png +share/help/ko/cheese/figures/settings.png +share/help/ko/cheese/index.page +share/help/ko/cheese/introduction.page +share/help/ko/cheese/legal.xml +share/help/ko/cheese/photo-delete.page +share/help/ko/cheese/photo-save.page +share/help/ko/cheese/photo-take.page +share/help/ko/cheese/photo-view.page +share/help/ko/cheese/pref-countdown.page +share/help/ko/cheese/pref-flash.page +share/help/ko/cheese/pref-fullscreen.page +share/help/ko/cheese/pref-image-properties.page +share/help/ko/cheese/pref-resolution.page +share/help/ko/cheese/video-record.page share/help/pt_BR/cheese/burst-mode.page share/help/pt_BR/cheese/effects-apply.page share/help/pt_BR/cheese/figures/cheese-delete.png @@ -480,6 +504,7 @@ 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/is/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 |