From a6817a27bf46e8d290a44ccf2446fc4e1da29456 Mon Sep 17 00:00:00 2001 From: Jeremy Olexa Date: Mon, 5 Dec 2011 14:45:24 +0000 Subject: [PATCH] Add upsteam patch to fix gtk3 compatibility issues, bug 392711 by Rob Bruce Package-Manager: portage-2.1.10.36/cvs/Linux i686 --- x11-misc/synergy/ChangeLog | 8 +- x11-misc/synergy/Manifest | 14 +- .../files/synergy-1.4.5-gtk3-fix.patch | 193 ++++++++++++++++++ x11-misc/synergy/synergy-1.4.5-r1.ebuild | 76 +++++++ 4 files changed, 279 insertions(+), 12 deletions(-) create mode 100644 x11-misc/synergy/files/synergy-1.4.5-gtk3-fix.patch create mode 100644 x11-misc/synergy/synergy-1.4.5-r1.ebuild diff --git a/x11-misc/synergy/ChangeLog b/x11-misc/synergy/ChangeLog index 49ec0078d796..6ce8aab8ee7f 100644 --- a/x11-misc/synergy/ChangeLog +++ b/x11-misc/synergy/ChangeLog @@ -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 +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 synergy-1.3.6.ebuild: x86 stable wrt bug #391393 diff --git a/x11-misc/synergy/Manifest b/x11-misc/synergy/Manifest index 0587581416b4..410cff392529 100644 --- a/x11-misc/synergy/Manifest +++ b/x11-misc/synergy/Manifest @@ -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 index 000000000000..37bf0f50626b --- /dev/null +++ b/x11-misc/synergy/files/synergy-1.4.5-gtk3-fix.patch @@ -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 header file. */ + #cmakedefine HAVE_X11_XKBLIB_H ${HAVE_X11_XKBLIB_H} + ++/* Define to 1 if you have the 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 + # endif ++# ifdef HAVE_XI2 ++# include ++# 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 index 000000000000..1deee2d09c95 --- /dev/null +++ b/x11-misc/synergy/synergy-1.4.5-r1.ebuild @@ -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* +} -- 2.26.2