Add upsteam patch to fix gtk3 compatibility issues, bug 392711 by Rob Bruce
authorJeremy Olexa <darkside@gentoo.org>
Mon, 5 Dec 2011 14:45:24 +0000 (14:45 +0000)
committerJeremy Olexa <darkside@gentoo.org>
Mon, 5 Dec 2011 14:45:24 +0000 (14:45 +0000)
Package-Manager: portage-2.1.10.36/cvs/Linux i686

x11-misc/synergy/ChangeLog
x11-misc/synergy/Manifest
x11-misc/synergy/files/synergy-1.4.5-gtk3-fix.patch [new file with mode: 0644]
x11-misc/synergy/synergy-1.4.5-r1.ebuild [new file with mode: 0644]

index 49ec0078d79623fced6cb8897236fda7baf59ca4..6ce8aab8ee7f06574569c87fd399d156c5d171ce 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for x11-misc/synergy
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-misc/synergy/ChangeLog,v 1.71 2011/11/28 11:45:44 phajdan.jr Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/synergy/ChangeLog,v 1.72 2011/12/05 14:45:24 darkside Exp $
+
+*synergy-1.4.5-r1 (05 Dec 2011)
+
+  05 Dec 2011; Jeremy Olexa <darkside@gentoo.org> +synergy-1.4.5-r1.ebuild,
+  +files/synergy-1.4.5-gtk3-fix.patch:
+  Add upsteam patch to fix gtk3 compatibility issues, bug 392711 by Rob Bruce
 
   28 Nov 2011; Pawel Hajdan jr <phajdan.jr@gentoo.org> synergy-1.3.6.ebuild:
   x86 stable wrt bug #391393
index 0587581416b4edc8dd24b8a12ffe66a32eebe69e..410cff39252973c8187ecb2180f6eee7398cedad 100644 (file)
@@ -1,9 +1,7 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA512
-
 AUX synergy-1.3.1+gcc-4.3.patch 4463 RMD160 e7c4fb526ec0011a3a9b9974dc20956ccef03a22 SHA1 b3a179405bc5b98c2379e13c27a760b543f7a476 SHA256 0dfcdedce8de2cf1285a7af30652eba7234d95d769f762774975ea4d0f293375
 AUX synergy-1.3.1-infinite-timeout-fix.patch 548 RMD160 59f2740e7da43d77ffb82704dab4c90a8c1e0821 SHA1 1fd4646f6b0000f44a7b6d12fe13ca6872c41143 SHA256 9038062a1e678ef858f161393332acdde9124beca45cedff9179582f33d20cca
 AUX synergy-1.3.1-stuttered-delay-fix.patch 2144 RMD160 0b375058a69d7f74e5f0da45e16b26bb114eb38f SHA1 b4be9b68a7caae1aa5476139e10566c380a80169 SHA256 4ffbbaea726e507e024d550459fb0ab25a9da70cb90245400e86d035bbd9a1b9
+AUX synergy-1.4.5-gtk3-fix.patch 6353 RMD160 72e1ea1fcb4c7f3f88e93a6b97963908e185dbe5 SHA1 a2e97371c55a42539549137bbe0070e47f794909 SHA256 795673183f1f8bb10aa8361613798e3e33dc229ce36295d4a642e875a849dda8
 DIST synergy-1.3.1.tar.gz 793172 RMD160 5f5d7cb8fcfb57a6c8eae83fb53c704cb85c6c16 SHA1 03113ec8aadfecaeba8e369b083f4fb5b44f5c62 SHA256 4a15e26456498dda5f3aa7d688a4892e0c50394a2f01685136fbc954bacc9691
 DIST synergy-1.3.6-Source.tar.gz 659025 RMD160 adcd5b7a2de7370a03b404c7827be58cb9f7467a SHA1 acbb8c62bc7f18cd4646c8b116c9acdeb2b405da SHA256 b136fcd2795837c5c56050c32ab32e7305a84fd4ac8f3dd6458d3abc18179162
 DIST synergy-1.4.2-Source.tar.gz 868390 RMD160 6dc54750cc9337bbb7c041436adae51bf6988b79 SHA1 d01b147a57cc9ad12287780b19133a0ae0095083 SHA256 eb277833db7e022b064588f64b78bfa36b555ae7aee1e5dd4dafb1c107bc1716
@@ -11,13 +9,7 @@ DIST synergy-1.4.5-Source.tar.gz 3002836 RMD160 cf45a71590d5cf4cca225be7b25566de
 EBUILD synergy-1.3.1.ebuild 1427 RMD160 5fd8e2b3c2e4adbfa10a79d9a608f8a41fa6d777 SHA1 987920d242b123b19cca0c637f2bd6eb8e5ff2a7 SHA256 3c6f65e2d4284ce44add8f33d224d7a44c3cf6c4f7783f0a73004bb8346a36fe
 EBUILD synergy-1.3.6.ebuild 1097 RMD160 d40a7065e980ea56013973160886e6a759d75a13 SHA1 f373f52ff568ff32084fe314fe998fc55cb71962 SHA256 d794233a7fd8387378a1691af91d0d3d951e724af8421a52f44ee2fabefb664a
 EBUILD synergy-1.4.2.ebuild 1562 RMD160 e37a5e47cbe754d69de986c5cc272c4fdffb44ce SHA1 efa436ab8ec8b3a5a7a9e6c1314260540c6ce58e SHA256 9e41938d68c0aaf0f4148d7f8a3cca4f914ad38276698bb76a7ce6ecd37ec97b
+EBUILD synergy-1.4.5-r1.ebuild 1736 RMD160 0a8f834efdcb288246c6f85b18057369e0302f5c SHA1 401e5a793290ce966a9e8224e8da1ea5bd9c6576 SHA256 99a61f28e2bbdd3697c3335f7a73d46597e652af8395fb67362e70f3d41869a6
 EBUILD synergy-1.4.5.ebuild 1665 RMD160 0e6aefbde095b0c7e46ef317a4180307231bd802 SHA1 c377e89b7b77fd459e324757980830a92812788c SHA256 da002f139865d45b6ee9be9f544c35d991d8717aef8d5e9ea981719bc8c8366c
-MISC ChangeLog 9593 RMD160 0532d9072f11a06125d97b25916696a238f86a01 SHA1 0a3d0432ee221e56984f41449919008028bfc69b SHA256 e3cc59f8477243b1546d40a8cb55f524a84a8a90951e5d75da7f4d0958b63a39
+MISC ChangeLog 9818 RMD160 4b8b98d2ea4a29d47f686fe9ba55c47be1dd6ad2 SHA1 e3c7e7dacf3fbbc574a6178b76437e2c7c700f14 SHA256 ccd80f44033cab44896aad3618b9635bf87ac11a7988a3e042f371f0f40799fb
 MISC metadata.xml 235 RMD160 fc62e96fe011b16210ab733a4ad8ea9c126fad91 SHA1 28b4e1e1b7086feb881d1d301e47200bcdab3ec0 SHA256 c232364986971636acb82c929ed2cf63881ed3f51ce439d8c4a7a5af34397378
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.17 (GNU/Linux)
-
-iEYEAREKAAYFAk7TdG4ACgkQuUQtlDBCeQLaVACdFntLFEcJm/5RJ93V706OW73t
-B3MAni6ut/wGjogSXuggRQmJ6iGjwXBf
-=4Aj5
------END PGP SIGNATURE-----
diff --git a/x11-misc/synergy/files/synergy-1.4.5-gtk3-fix.patch b/x11-misc/synergy/files/synergy-1.4.5-gtk3-fix.patch
new file mode 100644 (file)
index 0000000..37bf0f5
--- /dev/null
@@ -0,0 +1,193 @@
+diff -urEBwb synergy-1.4.4-Source/CMakeLists.txt synergy-1.4.4/CMakeLists.txt
+--- synergy-1.4.4-Source/CMakeLists.txt        2011-06-22 17:10:22.000000000 -0500
++++ synergy-1.4.4/CMakeLists.txt       2011-10-30 18:14:59.805858447 -0500
+@@ -169,6 +169,7 @@
+               check_include_files("X11/extensions/XKB.h" HAVE_XKB_EXTENSION)
+               check_include_files("X11/extensions/XTest.h" HAVE_X11_EXTENSIONS_XTEST_H)
+               check_include_files(${XKBlib} HAVE_X11_XKBLIB_H)
++              check_include_files("X11/extensions/XInput2.h" HAVE_XI2)
+ 
+               if (HAVE_X11_EXTENSIONS_DPMS_H)
+                       # Assume that function prototypes declared, when include exists.
+@@ -183,6 +184,7 @@
+               check_library_exists("X11;Xext" DPMSQueryExtension "" HAVE_Xext)
+               check_library_exists("X11;Xext;Xtst" XTestQueryExtension "" HAVE_Xtst)
+               check_library_exists("Xinerama" XineramaQueryExtension "" HAVE_Xinerama)
++              check_library_exists("Xi" XISelectEvents "" HAVE_Xi)
+ 
+               if (HAVE_ICE)
+ 
+@@ -218,6 +220,10 @@
+ 
+       endif()
+ 
++        IF(HAVE_Xi)
++                LIST(APPEND libs Xi)
++        ENDIF()
++
+       # For config.h, set some static values; it may be a good idea to make
+       # these values dynamic for non-standard UNIX compilers.
+       set(ACCEPT_TYPE_ARG3 socklen_t)
+diff -urEBwb synergy-1.4.4-Source/res/config.h.in synergy-1.4.4/res/config.h.in
+--- synergy-1.4.4-Source/res/config.h.in       2009-10-26 02:54:37.000000000 -0500
++++ synergy-1.4.4/res/config.h.in      2011-10-30 17:58:25.054795783 -0500
+@@ -124,6 +124,9 @@
+ /* Define to 1 if you have the <X11/XKBlib.h> header file. */
+ #cmakedefine HAVE_X11_XKBLIB_H ${HAVE_X11_XKBLIB_H}
+ 
++/* Define to 1 if you have the <X11/extensions/XInput2.h> header file. */
++#cmakedefine HAVE_XI2 ${HAVE_XI2}
++
+ /* Define this if the XKB extension is available. */
+ #cmakedefine HAVE_XKB_EXTENSION ${HAVE_XKB_EXTENSION}
+ 
+diff -urEBwb synergy-1.4.4-Source/src/lib/platform/CMakeLists.txt synergy-1.4.4/src/lib/platform/CMakeLists.txt
+--- synergy-1.4.4-Source/src/lib/platform/CMakeLists.txt       2011-08-27 21:34:24.000000000 -0500
++++ synergy-1.4.4/src/lib/platform/CMakeLists.txt      2011-10-30 18:08:02.131234528 -0500
+@@ -172,5 +172,5 @@
+ endif()
+ 
+ if (UNIX)
+-      target_link_libraries(platform synergy)
++      target_link_libraries(platform synergy ${libs})
+ endif()
+diff -urEBwb synergy-1.4.4-Source/src/lib/platform/CXWindowsEventQueueBuffer.cpp synergy-1.4.4/src/lib/platform/CXWindowsEventQueueBuffer.cpp
+--- synergy-1.4.4-Source/src/lib/platform/CXWindowsEventQueueBuffer.cpp        2011-01-14 22:12:51.000000000 -0600
++++ synergy-1.4.4/src/lib/platform/CXWindowsEventQueueBuffer.cpp       2011-10-30 17:55:29.951274194 -0500
+@@ -177,7 +177,7 @@
+                                               SELECT_TYPE_ARG234 NULL,
+                                               SELECT_TYPE_ARG234 NULL,
+                                               SELECT_TYPE_ARG5   TIMEOUT_DELAY);
+-      if (FD_SET(m_pipefd[0], &rfds) {
++      if (FD_SET(m_pipefd[0], &rfds)) {
+               read(m_pipefd[0], buf, 15);
+       }
+ #endif
+diff -urEBwb synergy-1.4.4-Source/src/lib/platform/CXWindowsScreen.cpp synergy-1.4.4/src/lib/platform/CXWindowsScreen.cpp
+--- synergy-1.4.4-Source/src/lib/platform/CXWindowsScreen.cpp  2011-01-17 14:56:04.000000000 -0600
++++ synergy-1.4.4/src/lib/platform/CXWindowsScreen.cpp 2011-10-30 17:55:29.951274194 -0500
+@@ -59,9 +59,13 @@
+ #     if HAVE_XKB_EXTENSION
+ #             include <X11/XKBlib.h>
+ #     endif
++#     ifdef HAVE_XI2
++#             include <X11/extensions/XInput2.h>
++#     endif
+ #endif
+ #include "CArch.h"
+ 
++static int xi_opcode;
+ 
+ //
+ // CXWindowsScreen
+@@ -102,7 +106,8 @@
+       m_screensaverNotify(false),
+       m_xtestIsXineramaUnaware(true),
+       m_preserveFocus(false),
+-      m_xkb(false)
++      m_xkb(false),
++      m_xi2detected(false)
+ {
+       assert(s_screen == NULL);
+ 
+@@ -142,6 +147,15 @@
+       if (m_isPrimary) {
+               // start watching for events on other windows
+               selectEvents(m_root);
++              m_xi2detected = detectXI2();
++
++              if (m_xi2detected) {
++                      selectXIRawMotion();
++              } else
++              {
++                      // start watching for events on other windows
++                      selectEvents(m_root);
++              }
+ 
+               // prepare to use input methods
+               openIM();
+@@ -1205,6 +1219,35 @@
+               return;
+       }
+ 
++      if (m_xi2detected) {
++              // Process RawMotion
++              XGenericEventCookie *cookie = (XGenericEventCookie*)&xevent->xcookie;
++                      if (XGetEventData(m_display, cookie) &&
++                              cookie->type == GenericEvent &&
++                              cookie->extension == xi_opcode) {
++                      if (cookie->evtype == XI_RawMotion) {
++                              // Get current pointer's position
++                              Window root, child;
++                              XMotionEvent xmotion;
++                              xmotion.type = MotionNotify;
++                              xmotion.send_event = False; // Raw motion
++                              xmotion.display = m_display;
++                              xmotion.window = m_window;
++                              /* xmotion's time, state and is_hint are not used */
++                              unsigned int msk;
++                                      xmotion.same_screen = XQueryPointer(
++                                              m_display, m_root, &xmotion.root, &xmotion.subwindow,
++                                              &xmotion.x_root,
++                                              &xmotion.y_root,
++                                              &xmotion.x,
++                                              &xmotion.y,
++                                              &msk);
++                                      onMouseMove(xmotion);
++                                      return;
++                      }
++              }
++      }
++
+       // handle the event ourself
+       switch (xevent->type) {
+       case CreateNotify:
+@@ -1954,3 +1997,27 @@
+       return (m_keycode < x.m_keycode ||
+                       (m_keycode == x.m_keycode && m_mask < x.m_mask));
+ }
++
++bool
++CXWindowsScreen::detectXI2()
++{
++      int event, error;
++    return XQueryExtension(m_display,
++                      "XInputExtension", &xi_opcode, &event, &error);
++}
++
++void
++CXWindowsScreen::selectXIRawMotion()
++{
++      XIEventMask mask;
++
++      mask.deviceid = XIAllDevices;
++      mask.mask_len = XIMaskLen(XI_RawMotion);
++      mask.mask = (unsigned char*)calloc(mask.mask_len, sizeof(char));
++      mask.deviceid = XIAllMasterDevices;
++      memset(mask.mask, 0, 2);
++    XISetMask(mask.mask, XI_RawKeyRelease);
++      XISetMask(mask.mask, XI_RawMotion);
++      XISelectEvents(m_display, DefaultRootWindow(m_display), &mask, 1);
++      free(mask.mask);
++}
+diff -urEBwb synergy-1.4.4-Source/src/lib/platform/CXWindowsScreen.h synergy-1.4.4/src/lib/platform/CXWindowsScreen.h
+--- synergy-1.4.4-Source/src/lib/platform/CXWindowsScreen.h    2011-08-27 13:41:23.000000000 -0500
++++ synergy-1.4.4/src/lib/platform/CXWindowsScreen.h   2011-10-30 17:55:29.952274694 -0500
+@@ -138,6 +138,8 @@
+       void                            onMouseRelease(const XButtonEvent&);
+       void                            onMouseMove(const XMotionEvent&);
+ 
++      bool                            detectXI2();
++      void                            selectXIRawMotion();
+       void                            selectEvents(Window) const;
+       void                            doSelectEvents(Window) const;
+ 
+@@ -235,6 +237,8 @@
+       bool                            m_xkb;
+       int                                     m_xkbEventBase;
+ 
++      bool                            m_xi2detected;
++
+       // pointer to (singleton) screen.  this is only needed by
+       // ioErrorHandler().
+       static CXWindowsScreen* s_screen;
diff --git a/x11-misc/synergy/synergy-1.4.5-r1.ebuild b/x11-misc/synergy/synergy-1.4.5-r1.ebuild
new file mode 100644 (file)
index 0000000..1deee2d
--- /dev/null
@@ -0,0 +1,76 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/synergy/synergy-1.4.5-r1.ebuild,v 1.1 2011/12/05 14:45:24 darkside Exp $
+
+EAPI=4
+
+inherit eutils cmake-utils qt4-r2
+
+DESCRIPTION="Lets you easily share a single mouse and keyboard between multiple computers."
+HOMEPAGE="http://synergy-foss.org/"
+SRC_URI="http://${PN}.googlecode.com/files/${P}-Source.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE="qt4"
+
+RDEPEND="x11-libs/libXtst
+       x11-libs/libX11
+       x11-libs/libXext
+       x11-libs/libXinerama
+       qt4? ( x11-libs/qt-gui )
+       qt4? ( !x11-misc/qsynergy )"
+DEPEND="${RDEPEND}
+       x11-proto/xextproto
+       x11-proto/xproto
+       x11-proto/kbproto
+       x11-proto/xineramaproto
+       x11-libs/libXt"
+
+S=${WORKDIR}/${P}-Source
+
+src_prepare() {
+       epatch "${FILESDIR}/${P}-gtk3-fix.patch"
+}
+
+src_configure() {
+       # 1.4.4+ : http://synergy-foss.org/pm/issues/3016
+       append-ldflags $(no-as-needed)
+
+       cmake-utils_src_configure
+
+       if use qt4 ; then
+               cd src/gui
+               qt4-r2_src_configure
+       fi
+}
+
+src_compile() {
+       cmake-utils_src_compile
+
+       if use qt4 ; then
+               cd src/gui
+               qt4-r2_src_compile
+       fi
+}
+
+src_install () {
+       dobin bin/${PN}{c,s}
+
+       if use qt4 ; then
+               newbin bin/${PN} qsynergy
+               # FIXME: convert the .ico file to a real png instead
+               newicon src/gui/res/win/QSynergy.ico q${PN}.png
+               make_desktop_entry q${PN} ${PN/s/S} q${PN} Utility;
+       fi
+
+       insinto /etc
+       newins doc/synergy.conf.example synergy.conf
+
+       mv doc/${PN}c.man  doc/${PN}c.1 || die
+       mv doc/${PN}s.man  doc/${PN}s.1 || die
+       doman doc/${PN}{c,s}.1
+
+       dodoc README doc/synergy.conf.example*
+}