Hello community, here is the log from the commit of package libgaminggear for openSUSE:Factory checked in at 2014-09-29 12:40:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libgaminggear (Old) and /work/SRC/openSUSE:Factory/.libgaminggear.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgaminggear" Changes: -------- --- /work/SRC/openSUSE:Factory/libgaminggear/libgaminggear.changes 2014-07-11 20:06:10.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libgaminggear.new/libgaminggear.changes 2014-09-29 12:40:38.000000000 +0200 @@ -1,0 +2,18 @@ +Sun Sep 28 16:15:12 UTC 2014 - [email protected] + +- Removed %defines for minor and microversion, as they really aren't needed. + +------------------------------------------------------------------- +Sat Sep 27 17:38:00 UTC 2014 - [email protected] + +- Update to version 0.5.0 + * Improved: GaminggearDevice + * Fixed: Canberra notifications are failsafe now +- Added: + * libgaminggear-0.5.0.tar.bz2 + * 0001-fix_libgaminggearwidget_libs.patch + + Patch adds dependecy libraries to libgaminggearwidget/CMakeLists.txt +- Removed: + * libgaminggear-0.4.0.tar.bz2 + +------------------------------------------------------------------- Old: ---- libgaminggear-0.4.0.tar.bz2 New: ---- 0001-fix_libgaminggearwidget_libs.patch libgaminggear-0.5.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libgaminggear.spec ++++++ --- /var/tmp/diff_new_pack.52GoNj/_old 2014-09-29 12:40:39.000000000 +0200 +++ /var/tmp/diff_new_pack.52GoNj/_new 2014-09-29 12:40:39.000000000 +0200 @@ -17,16 +17,16 @@ %define majorversion 0 -%define minorversion 4 -%define microversion 0 Name: libgaminggear -Version: %{majorversion}.%{minorversion}.%{microversion} +Version: 0.5.0 Release: 0 Summary: Library for gaming input devices License: GPL-2.0 and CC-BY-3.0 Group: Development/Libraries/C and C++ Url: https://sourceforge.net/projects/libgaminggear/ -Source: http://downloads.sourceforge.net/libgaminggear/%{name}-%{version}.tar.bz2 +Source: http://downloads.sourceforge.net/project/%{name}/%{name}-%{version}.tar.bz2 +# PATCH-FIX-UPSTREAM 0001-fix_libgaminggearwidget_libs.patch [email protected] -- Adds library dependencies to libgaminggearwidget, so it will build properly (sf#/p/libgaminggear/patches/1/) +Patch0: 0001-fix_libgaminggearwidget_libs.patch BuildRequires: cmake >= 2.6.4 BuildRequires: doxygen BuildRequires: fdupes @@ -55,6 +55,7 @@ %prep %setup -q +%patch0 -p1 %build %cmake ++++++ 0001-fix_libgaminggearwidget_libs.patch ++++++ Index: libgaminggear-0.5.0/libgaminggearwidget/CMakeLists.txt =================================================================== --- libgaminggear-0.5.0.orig/libgaminggearwidget/CMakeLists.txt +++ libgaminggear-0.5.0/libgaminggearwidget/CMakeLists.txt @@ -41,7 +41,13 @@ ADD_DEPENDENCIES(libgaminggearwidget ) TARGET_LINK_LIBRARIES(libgaminggearwidget + libgaminggear + m ${GTK2_LIBRARIES} + ${GLIB2_LIBRARIES} + ${GDK_LIBRARIES} + ${CAIRO_LIBRARIES} + ${PANGO_LIBRARIES} ) SET_TARGET_PROPERTIES(libgaminggearwidget ++++++ libgaminggear-0.4.0.tar.bz2 -> libgaminggear-0.5.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/CMakeLists.txt new/libgaminggear-0.5.0/CMakeLists.txt --- old/libgaminggear-0.4.0/CMakeLists.txt 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/CMakeLists.txt 2014-09-08 16:02:23.000000000 +0200 @@ -37,7 +37,7 @@ "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") SET(V_MAJOR 0) -SET(V_MINOR 4) +SET(V_MINOR 5) SET(V_MICRO 0) INCLUDE_DIRECTORIES( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/Changelog new/libgaminggear-0.5.0/Changelog --- old/libgaminggear-0.4.0/Changelog 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/Changelog 2014-09-08 16:02:23.000000000 +0200 @@ -1,3 +1,8 @@ +0.5.0 2014-09-08 + + * Improved: GaminggearDevice + * Fixed: Canberra notifications are failsafe now + 0.4.0 2014-07-04 * Added GaminggearAudioNotificator and GaminggearScreenNotificator diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/include/gaminggear/gaminggear_device.h new/libgaminggear-0.5.0/include/gaminggear/gaminggear_device.h --- old/libgaminggear-0.4.0/include/gaminggear/gaminggear_device.h 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/include/gaminggear/gaminggear_device.h 2014-09-08 16:02:23.000000000 +0200 @@ -51,10 +51,11 @@ * \param identifier The unique identifier of the device. * \param vendor_id The vendor id of the device. * \param product_id The product id of the device. + * \param num_interfaces The number of interfaces of the device. * \retval device The new GaminggearDevice which should be freed with g_object_unref(). * \since 1.0 */ -GaminggearDevice *gaminggear_device_new(gchar const *identifier, guint vendor_id, guint product_id); +GaminggearDevice *gaminggear_device_new(gchar const *identifier, guint vendor_id, guint product_id, guint num_interfaces); /*! \brief Get identifier. * \param gaminggear_dev A GaminggearDevice. @@ -77,6 +78,13 @@ */ guint gaminggear_device_get_vendor_id(GaminggearDevice const *gaminggear_dev); +/*! \brief Get number of interfaces. + * \param gaminggear_dev A GaminggearDevice. + * \retval num_interfaces The number of interfaces of the device given at construction time. + * \since 1.0 + */ +guint gaminggear_device_get_num_interfaces(GaminggearDevice const *gaminggear_dev); + /*! \brief Match device agains vendor/product id * \param gaminggear_dev A GaminggearDevice. * \param vendor_id The vendor id to match against. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/libgaminggear/gaminggear_audio_notificator_canberra.c new/libgaminggear-0.5.0/libgaminggear/gaminggear_audio_notificator_canberra.c --- old/libgaminggear-0.4.0/libgaminggear/gaminggear_audio_notificator_canberra.c 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/libgaminggear/gaminggear_audio_notificator_canberra.c 2014-09-08 16:02:23.000000000 +0200 @@ -30,6 +30,9 @@ }; static guint gaminggear_audio_notificator_claim_next_id(GaminggearAudioNotificator *notificator) { + if (notificator == NULL) + return 0; + return notificator->next_id++; } @@ -86,7 +89,7 @@ void gaminggear_audio_notificator_deinit(GaminggearAudioNotificator *notificator) { gint retval; - if (notificator->context == NULL) + if (notificator == NULL) return; retval = ca_context_destroy(notificator->context); @@ -97,6 +100,10 @@ GaminggearAudioNotification *gaminggear_audio_notification_new(GaminggearAudioNotificator *notificator) { GaminggearAudioNotification *notification; + + if (notificator == NULL) + return NULL; + notification = (GaminggearAudioNotification *)g_malloc0(sizeof(GaminggearAudioNotification)); notification->notificator = notificator; notification->id = gaminggear_audio_notificator_claim_next_id(notificator); @@ -109,6 +116,10 @@ gboolean gaminggear_audio_notification_cancel(GaminggearAudioNotification *notification) { gint retval; + + if (notification == NULL) + return FALSE; + retval = ca_context_cancel(notification->notificator->context, notification->id); if (retval != 0 && retval != CA_ERROR_STATE) { g_warning("Error cancelling audio notificator: %s", ca_strerror(retval)); @@ -121,6 +132,9 @@ gint retval; gchar *volume_string; + if (notification == NULL) + return FALSE; + volume_string = g_strdup_printf("%f", volume); gaminggear_audio_notification_cancel(notification); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/libgaminggear/gaminggear_device.c new/libgaminggear-0.5.0/libgaminggear/gaminggear_device.c --- old/libgaminggear-0.4.0/libgaminggear/gaminggear_device.c 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/libgaminggear/gaminggear_device.c 2014-09-08 16:02:23.000000000 +0200 @@ -30,6 +30,9 @@ guint vendor_id; guint product_id; GaminggearRecMutex lock; + GHashTable *paths; + GHashTable *fds; + guint num_interfaces; }; enum { @@ -37,74 +40,50 @@ PROP_IDENTIFIER, PROP_PRODUCT_ID, PROP_VENDOR_ID, + PROP_NUM_INTERFACES, }; G_DEFINE_TYPE(GaminggearDevice, gaminggear_device, G_TYPE_OBJECT); -static gchar *create_fd_string(gchar const *key) { - return g_strconcat("fd_", key, NULL); -} - -static void gaminggear_device_set_fd(GaminggearDevice *gaminggear_device, gchar const *key, gint fd) { - gchar *fd_key; - fd_key = create_fd_string(key); - g_object_set_data(G_OBJECT(gaminggear_device), fd_key, GINT_TO_POINTER(fd)); - g_free(fd_key); -} - -static int gaminggear_device_get_fd(GaminggearDevice *gaminggear_device, gchar const *key) { - gchar *fd_key; - int fd; - - fd_key = create_fd_string(key); - fd = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gaminggear_device), fd_key)); - g_free(fd_key); - - return fd; -} - int gaminggear_device_open(GaminggearDevice *gaminggear_device, gchar const *key, gint flags, GError **error) { gchar const *path; + gpointer value; int fd; - /* fd is only valid if path is set */ + // already open? + if (g_hash_table_lookup_extended(gaminggear_device->priv->fds, key, NULL, &value)) + return GPOINTER_TO_INT(value); + path = gaminggear_device_get_path(gaminggear_device, key); if (!path) { - g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_INVAL, "Error opening file: no path"); + g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_INVAL, "GaminggearDevice: error opening file for key %s: no path", key); return -1; } - fd = gaminggear_device_get_fd(gaminggear_device, key); - if (fd >= 0) - return fd; - fd = open(path, flags, 0); if (fd < 0) - g_set_error(error, G_FILE_ERROR, g_file_error_from_errno(errno), "Error opening %s: %s", path, g_strerror(errno)); + g_set_error(error, G_FILE_ERROR, g_file_error_from_errno(errno), "GaminggearDevice: error opening %s for key %s: %s", path, key, g_strerror(errno)); + + g_hash_table_insert(gaminggear_device->priv->fds, g_strdup(key), GINT_TO_POINTER(fd)); - gaminggear_device_set_fd(gaminggear_device, key, fd); return fd; } gboolean gaminggear_device_close(GaminggearDevice *gaminggear_device, gchar const *key, GError **error) { - gchar const *path; + gpointer value; int fd; - /* fd is only valid if path is set */ - path = gaminggear_device_get_path(gaminggear_device, key); - if (!path) { - g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_INVAL, "Error closing file: no path"); + if (!g_hash_table_lookup_extended(gaminggear_device->priv->fds, key, NULL, &value)) { + g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_INVAL, "GaminggearDevice: error closing fd for key %s: no entry", key); return FALSE; } - fd = gaminggear_device_get_fd(gaminggear_device, key); - if (fd >= 0) { - if (close(fd) < 0) { - g_set_error(error, G_FILE_ERROR, g_file_error_from_errno(errno), "Error closing %s: %s", path, g_strerror(errno)); - return FALSE; - } - gaminggear_device_set_fd(gaminggear_device, key, -1); + fd = GPOINTER_TO_INT(value); + if (close(fd) < 0) { + g_set_error(error, G_FILE_ERROR, g_file_error_from_errno(errno), "GaminggearDevice: error closing fd for key %s: %s", key, g_strerror(errno)); + return FALSE; } + g_hash_table_remove(gaminggear_device->priv->fds, key); return TRUE; } @@ -117,12 +96,11 @@ g_free(old_path); } - g_object_set_data(G_OBJECT(gaminggear_device), key, g_strdup(path)); - gaminggear_device_set_fd(gaminggear_device, key, -1); + g_hash_table_insert(gaminggear_device->priv->paths, g_strdup(key), g_strdup(path)); } gchar const *gaminggear_device_get_path(GaminggearDevice *gaminggear_device, gchar const *key) { - return (gchar const *)g_object_get_data(G_OBJECT(gaminggear_device), key); + return (gchar const *)g_hash_table_lookup(gaminggear_device->priv->paths, key); } void gaminggear_device_lock(GaminggearDevice *gaminggear_dev) { @@ -145,24 +123,42 @@ return gaminggear_dev->priv->vendor_id; } +guint gaminggear_device_get_num_interfaces(GaminggearDevice const *gaminggear_dev) { + return gaminggear_dev->priv->num_interfaces; +} + gboolean gaminggear_device_matches(GaminggearDevice const *gaminggear_dev, guint vendor_id, guint product_id) { GaminggearDevicePrivate *priv = gaminggear_dev->priv; return (priv->vendor_id == vendor_id && priv->product_id == product_id); } -GaminggearDevice *gaminggear_device_new(gchar const *identifier, guint vendor_id, guint product_id) { +GaminggearDevice *gaminggear_device_new(gchar const *identifier, guint vendor_id, guint product_id, guint num_interfaces) { return GAMINGGEAR_DEVICE(g_object_new(GAMINGGEAR_DEVICE_TYPE, "identifier", identifier, "vendor-id", vendor_id, "product-id", product_id, + "num-interfaces", num_interfaces, NULL)); } +static void destroy_str(gpointer data) { + g_free(data); +} + +static void destroy_fd(gpointer data) { + int fd = GPOINTER_TO_INT(data); + if (close(fd) < 0) + g_warning("GaminggearDevice: error closing fd %i: %s", fd, g_strerror(errno)); +} + static void gaminggear_device_init(GaminggearDevice *gaminggear_dev) { GaminggearDevicePrivate *priv = GAMINGGEAR_DEVICE_GET_PRIVATE(gaminggear_dev); gaminggear_dev->priv = priv; gaminggear_rec_mutex_init(&priv->lock); + + priv->paths = g_hash_table_new_full(g_str_hash, g_str_equal, destroy_str, destroy_str); + priv->fds = g_hash_table_new_full(g_str_hash, g_str_equal, destroy_str, destroy_fd); } static void set_property(GObject *object, guint prop_id, GValue const *value, GParamSpec *pspec) { @@ -178,6 +174,9 @@ case PROP_VENDOR_ID: priv->vendor_id = g_value_get_uint(value); break; + case PROP_NUM_INTERFACES: + priv->num_interfaces = g_value_get_uint(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -188,6 +187,8 @@ GaminggearDevicePrivate *priv = GAMINGGEAR_DEVICE(object)->priv; g_free(priv->identifier); + g_hash_table_unref(priv->paths); + g_hash_table_unref(priv->fds); gaminggear_rec_mutex_clear(&priv->lock); G_OBJECT_CLASS(gaminggear_device_parent_class)->finalize(object); @@ -223,6 +224,13 @@ "Vendor ID", 0, G_MAXUINT, 0, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property(gobject_class, PROP_NUM_INTERFACES, + g_param_spec_uint("num-interfaces", + "num-interfaces", + "Number of interfaces", + 0, G_MAXUINT, 0, + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); } gboolean gaminggear_device_equal(GaminggearDevice const *one, GaminggearDevice const *other) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libgaminggear-0.4.0/libgaminggear.spec new/libgaminggear-0.5.0/libgaminggear.spec --- old/libgaminggear-0.4.0/libgaminggear.spec 2014-07-04 14:37:43.000000000 +0200 +++ new/libgaminggear-0.5.0/libgaminggear.spec 2014-09-08 16:02:23.000000000 +0200 @@ -1,5 +1,5 @@ %define vmajor 0 -%define vminor 4 +%define vminor 5 %define vmicro 0 Name: libgaminggear @@ -80,5 +80,5 @@ /usr/share/cmake/Modules/FindGAMINGGEAR%{vmajor}.cmake %changelog -* Fri Jul 04 2014 Stefan Achatz <[email protected]> 0.4.0-1 +* Mon Sep 08 2014 Stefan Achatz <[email protected]> 0.5.0-1 - Initial version -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
