Hello community,

here is the log from the commit of package synergy for openSUSE:Factory checked 
in at 2015-09-08 17:42:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/synergy (Old)
 and      /work/SRC/openSUSE:Factory/.synergy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "synergy"

Changes:
--------
--- /work/SRC/openSUSE:Factory/synergy/synergy.changes  2015-08-19 
09:29:16.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.synergy.new/synergy.changes     2015-09-08 
17:46:52.000000000 +0200
@@ -1,0 +2,30 @@
+Fri Sep  4 15:34:37 UTC 2015 - [email protected]
+
+- make clipboard and selection work reliably again
+  (bnc#944514, synergy #4735)
+  fix-bug-4735-don-t-leave-until-fillclipboard-s-all.patch
+  properly-lock-condvar-add-timeout-condition-to-prevent.patch
+
+-------------------------------------------------------------------
+Thu Sep  3 12:30:24 UTC 2015 - [email protected]
+
+- Update to 1.7.4
+  * Bug #4721 - High CPU usage for Windows service
+  * Bug #4750 - SSL connect error 'passive ssl error limit'
+  * Bug #4584 - Drag and drop with SSL causes crash
+  * Bug #4749 - Clipboard thread race condition causes assertion 
+    failure
+  * Bug #4720 - Plugin download shows 'Could not get Linux package 
+    type' error
+  * Bug #4712 - Unable to send clipboard with size above 1KB when 
+    using SSL
+  * Bug #4642 - Connecting causes SSL23_GET_SERVER_HELLO error
+  * Bug #4690 - Log line 'activeDesktop' does not use logging 
+    system
+  * Bug #4866 - Wrong ns plugin version can be loaded
+  * Enhancement #4901 - Auto restart when running from GUI in 
+    desktop mode
+  * Enhancement #4845 - Add timestamp to log output
+- Enable building for SLE-12
+
+-------------------------------------------------------------------

Old:
----
  v1.7.3-stable.tar.gz

New:
----
  fix-bug-4735-don-t-leave-until-fillclipboard-s-all.patch
  properly-lock-condvar-add-timeout-condition-to-prevent.patch
  v1.7.4-stable.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ synergy.spec ++++++
--- /var/tmp/diff_new_pack.n2Gd1f/_old  2015-09-08 17:47:22.000000000 +0200
+++ /var/tmp/diff_new_pack.n2Gd1f/_new  2015-09-08 17:47:22.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           synergy
-Version:        1.7.3
+Version:        1.7.4
 Release:        0
 Summary:        Mouse, keyboard and clipboard sharing utility
 License:        GPL-2.0+
@@ -33,22 +33,26 @@
 Patch11:        synergy-1.5.0-pthread.patch
 Patch13:        synergy-1.5.0-test.patch
 Patch14:        synergy-1.5.0-disable-version-check.patch
+Patch15:        fix-bug-4735-don-t-leave-until-fillclipboard-s-all.patch
+Patch16:        properly-lock-condvar-add-timeout-condition-to-prevent.patch
 BuildRequires:  avahi-devel
 BuildRequires:  cmake
 BuildRequires:  curl-devel
 BuildRequires:  gcc-c++
-BuildRequires:  libcryptopp-devel
 BuildRequires:  libqt4-devel
 BuildRequires:  mDNSResponder-devel
 BuildRequires:  systemd
 BuildRequires:  update-desktop-files
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(xtst)
-%{?systemd_requires}
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+%if 0%{?suse_version} != 1315
+BuildRequires:  libcryptopp-devel
 Requires(pre):  %fillup_prereq
 Provides:       synergy-plus = %{version}
 Obsoletes:      synergy-plus < %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+%endif
+%{?systemd_requires}
 
 %description
 Synergy lets you easily share a single mouse and keyboard between
@@ -79,6 +83,8 @@
 %patch11 -p1
 %patch13 -p1
 %patch14 -p1
+%patch15 -p1
+%patch16 -p1
 
 cp %{SOURCE2} .
 
@@ -128,7 +134,7 @@
 %suse_update_desktop_file -i q%{name}
 
 %post
-%{fillup_only}
+%fillup_only
 %desktop_database_post
 %service_add_post synergys.service synergys.socket
 
@@ -150,8 +156,8 @@
 %{_bindir}/synergys
 %{_bindir}/syntool
 %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/synergy
-%doc %{_mandir}/man1/synergys.1%{?ext_man}
-%doc %{_mandir}/man1/synergyc.1%{?ext_man}
+%{_mandir}/man1/synergys.1%{?ext_man}
+%{_mandir}/man1/synergyc.1%{?ext_man}
 %{_unitdir}/synergys.service
 %{_unitdir}/synergys.socket
 %{_sbindir}/rcsynergys

++++++ fix-bug-4735-don-t-leave-until-fillclipboard-s-all.patch ++++++
>From 32ad85706878a92f5964847b1d88752fb5685303 Mon Sep 17 00:00:00 2001
From: Nye Liu <[email protected]>
Date: Tue, 1 Sep 2015 17:39:25 -0700
Subject: [PATCH] Fix bug #4735 - don't leave() until fillClipboard()s all
 complete

---
 src/lib/client/Client.cpp | 66 ++++++++++++++++++++++++++++++++++-------------
 src/lib/client/Client.h   |  9 +++++--
 2 files changed, 55 insertions(+), 20 deletions(-)

Index: synergy-1.7.4-stable/src/lib/client/Client.cpp
===================================================================
--- synergy-1.7.4-stable.orig/src/lib/client/Client.cpp
+++ synergy-1.7.4-stable/src/lib/client/Client.cpp
@@ -21,7 +21,6 @@
 #include "../plugin/ns/SecureSocket.h"
 #include "client/ServerProxy.h"
 #include "synergy/Screen.h"
-#include "synergy/Clipboard.h"
 #include "synergy/FileChunk.h"
 #include "synergy/DropHelper.h"
 #include "synergy/PacketStreamFilter.h"
@@ -75,7 +74,10 @@ Client::Client(
        m_socket(NULL),
        m_useSecureNetwork(false),
        m_args(args),
-       m_sendClipboardThread(NULL)
+       m_sendClipboardThread(NULL),
+       m_mutex(NULL),
+       m_condData(false),
+       m_condVar(NULL)
 {
        assert(m_socketFactory != NULL);
        assert(m_screen        != NULL);
@@ -107,6 +109,8 @@ Client::Client(
                        LOG((CLOG_NOTE "crypto disabled because of ns plugin 
not available"));
                }
        }
+       m_mutex = new Mutex();
+       m_condVar = new CondVar<bool>(m_mutex, m_condData);
 }
 
 Client::~Client()
@@ -125,6 +129,8 @@ Client::~Client()
        cleanupConnecting();
        cleanupConnection();
        delete m_socketFactory;
+       delete m_condVar;
+       delete m_mutex;
 }
 
 void
@@ -262,8 +268,6 @@ Client::enter(SInt32 xAbs, SInt32 yAbs,
 bool
 Client::leave()
 {
-       m_screen->leave();
-
        m_active = false;
 
        if (m_sendClipboardThread != NULL) {
@@ -272,11 +276,17 @@ Client::leave()
                m_sendClipboardThread = NULL;
        }
 
+       m_condData = false;
        m_sendClipboardThread = new Thread(
                                                                new 
TMethodJob<Client>(
                                                                        this,
                                                                        
&Client::sendClipboardThread,
                                                                        NULL));
+       // Bug #4735 - we can't leave() until fillClipboard()s all finish
+       while (!m_condData)
+           m_condVar->wait();
+
+       m_screen->leave();
 
        if (!m_receivedFileData.empty()) {
                m_receivedFileData.clear();
@@ -382,9 +392,20 @@ Client::getName() const
 }
 
 void
-Client::sendClipboard(ClipboardID id)
+Client::fillClipboard(ClipboardID id, Clipboard *clipboard)
+{
+       assert(m_screen != NULL);
+       assert(m_server != NULL);
+
+       if (clipboard->open(m_timeClipboard[id])) {
+               clipboard->close();
+       }
+       m_screen->getClipboard(id, clipboard);
+}
+
+void
+Client::sendClipboard(ClipboardID id, Clipboard *clipboard)
 {
-       // note -- m_mutex must be locked on entry
        assert(m_screen != NULL);
        assert(m_server != NULL);
 
@@ -392,26 +413,21 @@ Client::sendClipboard(ClipboardID id)
        // clipboard time before getting the data from the screen
        // as the screen may detect an unchanged clipboard and
        // avoid copying the data.
-       Clipboard clipboard;
-       if (clipboard.open(m_timeClipboard[id])) {
-               clipboard.close();
-       }
-       m_screen->getClipboard(id, &clipboard);
 
        // check time
        if (m_timeClipboard[id] == 0 ||
-               clipboard.getTime() != m_timeClipboard[id]) {
+               clipboard->getTime() != m_timeClipboard[id]) {
                // save new time
-               m_timeClipboard[id] = clipboard.getTime();
+               m_timeClipboard[id] = clipboard->getTime();
 
                // marshall the data
-               String data = clipboard.marshall();
+               String data = clipboard->marshall();
 
                // save and send data if different or not yet sent
                if (!m_sentClipboard[id] || data != m_dataClipboard[id]) {
                        m_sentClipboard[id] = true;
                        m_dataClipboard[id] = data;
-                       m_server->onClipboardChanged(id, &clipboard);
+                       m_server->onClipboardChanged(id, clipboard);
                }
        }
 }
@@ -673,8 +689,10 @@ Client::handleClipboardGrabbed(const Eve
 
        // if we're not the active screen then send the clipboard now,
        // otherwise we'll wait until we leave.
+       Clipboard clipboard;
        if (!m_active) {
-               sendClipboard(info->m_id);
+               fillClipboard(info->m_id, &clipboard);
+               sendClipboard(info->m_id, &clipboard);
        }
 }
 
@@ -762,12 +780,24 @@ Client::onFileRecieveCompleted()
 }
 
 void
-Client::sendClipboardThread(void*)
+Client::sendClipboardThread(void * data)
 {
+       Clipboard clipboard[kClipboardEnd];
+       // fill clipboards that we own and that have changed
+       for (ClipboardID id = 0; id < kClipboardEnd; ++id) {
+               if (m_ownClipboard[id]) {
+                       fillClipboard(id, &clipboard[id]);
+               }
+       }
+
+       // signal that fill is done
+       m_condData = true;
+       m_condVar->signal();
+
        // send clipboards that we own and that have changed
        for (ClipboardID id = 0; id < kClipboardEnd; ++id) {
                if (m_ownClipboard[id]) {
-                       sendClipboard(id);
+                       sendClipboard(id, &clipboard[id]);
                }
        }
 
Index: synergy-1.7.4-stable/src/lib/client/Client.h
===================================================================
--- synergy-1.7.4-stable.orig/src/lib/client/Client.h
+++ synergy-1.7.4-stable/src/lib/client/Client.h
@@ -20,12 +20,13 @@
 
 #include "synergy/IClient.h"
 
-#include "synergy/IClipboard.h"
+#include "synergy/Clipboard.h"
 #include "synergy/DragInformation.h"
 #include "synergy/INode.h"
 #include "synergy/ClientArgs.h"
 #include "net/NetworkAddress.h"
 #include "base/EventTypes.h"
+#include "mt/CondVar.h"
 
 class EventQueueTimer;
 namespace synergy { class Screen; }
@@ -162,7 +163,8 @@ public:
        virtual String          getName() const;
 
 private:
-       void                            sendClipboard(ClipboardID);
+       void                            fillClipboard(ClipboardID, Clipboard*);
+       void                            sendClipboard(ClipboardID, Clipboard*);
        void                            sendEvent(Event::Type, void*);
        void                            sendConnectionFailedEvent(const char* 
msg);
        void                            sendFileChunk(const void* data);
@@ -223,4 +225,7 @@ private:
        bool                            m_useSecureNetwork;
        ClientArgs&                     m_args;
        Thread*                         m_sendClipboardThread;
+       Mutex*                          m_mutex;
+       bool                            m_condData;
+       CondVar<bool>*                  m_condVar;
 };
++++++ properly-lock-condvar-add-timeout-condition-to-prevent.patch ++++++
>From 5a74c85e67c939d589f58064c9f094385dc41731 Mon Sep 17 00:00:00 2001
From: Nye Liu <[email protected]>
Date: Thu, 3 Sep 2015 12:09:35 -0700
Subject: [PATCH] Properly lock condVar, add timeout condition to prevent
 infinite loop when waiting for fillClipboard() to finish

---
 src/lib/client/Client.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

Index: synergy-1.7.4-stable/src/lib/client/Client.cpp
===================================================================
--- synergy-1.7.4-stable.orig/src/lib/client/Client.cpp
+++ synergy-1.7.4-stable/src/lib/client/Client.cpp
@@ -283,8 +283,16 @@ Client::leave()
                                                                        
&Client::sendClipboardThread,
                                                                        NULL));
        // Bug #4735 - we can't leave() until fillClipboard()s all finish
-       while (!m_condData)
-           m_condVar->wait();
+       Stopwatch timer(true);
+       m_mutex->lock();
+       while (!m_condData) {
+           m_condVar->wait(timer, 0.5);
+           if (timer.getTime()>0.5) {
+               LOG((CLOG_DEBUG "timed out waiting for clipboard fill"));
+               break;
+           }
+       }
+       m_mutex->unlock();
 
        m_screen->leave();
 
@@ -791,8 +799,10 @@ Client::sendClipboardThread(void * data)
        }
 
        // signal that fill is done
+       m_mutex->lock();
        m_condData = true;
        m_condVar->signal();
+       m_mutex->unlock();
 
        // send clipboards that we own and that have changed
        for (ClipboardID id = 0; id < kClipboardEnd; ++id) {

++++++ synergy-1.5.0-disable-version-check.patch ++++++
--- /var/tmp/diff_new_pack.n2Gd1f/_old  2015-09-08 17:47:22.000000000 +0200
+++ /var/tmp/diff_new_pack.n2Gd1f/_new  2015-09-08 17:47:22.000000000 +0200
@@ -1,8 +1,8 @@
-Index: synergy-1.7.3-stable/src/gui/src/MainWindow.cpp
+Index: synergy-1.7.4-stable/src/gui/src/MainWindow.cpp
 ===================================================================
---- synergy-1.7.3-stable.orig/src/gui/src/MainWindow.cpp
-+++ synergy-1.7.3-stable/src/gui/src/MainWindow.cpp
-@@ -165,7 +165,7 @@ void MainWindow::open()
+--- synergy-1.7.4-stable.orig/src/gui/src/MainWindow.cpp
++++ synergy-1.7.4-stable/src/gui/src/MainWindow.cpp
+@@ -168,7 +168,7 @@ void MainWindow::open()
                showNormal();
        }
  

++++++ synergy-1.5.0-pthread.patch ++++++
--- /var/tmp/diff_new_pack.n2Gd1f/_old  2015-09-08 17:47:22.000000000 +0200
+++ /var/tmp/diff_new_pack.n2Gd1f/_new  2015-09-08 17:47:22.000000000 +0200
@@ -1,8 +1,8 @@
-Index: synergy-1.7.3-stable/CMakeLists.txt
+Index: synergy-1.7.4-stable/CMakeLists.txt
 ===================================================================
---- synergy-1.7.3-stable.orig/CMakeLists.txt
-+++ synergy-1.7.3-stable/CMakeLists.txt
-@@ -152,6 +152,8 @@ if (UNIX)
+--- synergy-1.7.4-stable.orig/CMakeLists.txt
++++ synergy-1.7.4-stable/CMakeLists.txt
+@@ -151,6 +151,8 @@ if (UNIX)
        check_library_exists("pthread" pthread_create "" HAVE_PTHREAD)
        if (HAVE_PTHREAD)
                list(APPEND libs pthread)

++++++ synergy-1.5.0-test.patch ++++++
--- /var/tmp/diff_new_pack.n2Gd1f/_old  2015-09-08 17:47:22.000000000 +0200
+++ /var/tmp/diff_new_pack.n2Gd1f/_new  2015-09-08 17:47:22.000000000 +0200
@@ -1,7 +1,7 @@
-Index: synergy-1.7.3-stable/src/CMakeLists.txt
+Index: synergy-1.7.4-stable/src/CMakeLists.txt
 ===================================================================
---- synergy-1.7.3-stable.orig/src/CMakeLists.txt
-+++ synergy-1.7.3-stable/src/CMakeLists.txt
+--- synergy-1.7.4-stable.orig/src/CMakeLists.txt
++++ synergy-1.7.4-stable/src/CMakeLists.txt
 @@ -18,6 +18,6 @@ add_subdirectory(lib)
  add_subdirectory(cmd)
  add_subdirectory(micro)
@@ -10,10 +10,10 @@
 +if (${WITH_GENTOO_TEST} MATCHES "ON")
        add_subdirectory(test)
  endif()
-Index: synergy-1.7.3-stable/src/test/CMakeLists.txt
+Index: synergy-1.7.4-stable/src/test/CMakeLists.txt
 ===================================================================
---- synergy-1.7.3-stable.orig/src/test/CMakeLists.txt
-+++ synergy-1.7.3-stable/src/test/CMakeLists.txt
+--- synergy-1.7.4-stable.orig/src/test/CMakeLists.txt
++++ synergy-1.7.4-stable/src/test/CMakeLists.txt
 @@ -14,20 +14,5 @@
  # You should have received a copy of the GNU General Public License
  # along with this program.  If not, see <http://www.gnu.org/licenses/>.

++++++ v1.7.3-stable.tar.gz -> v1.7.4-stable.tar.gz ++++++
/work/SRC/openSUSE:Factory/synergy/v1.7.3-stable.tar.gz 
/work/SRC/openSUSE:Factory/.synergy.new/v1.7.4-stable.tar.gz differ: char 13, 
line 1


Reply via email to