From 24e9afb2b654f14eb36376637acdcda7671b5f62 Mon Sep 17 00:00:00 2001 From: Et0h Date: Sat, 24 Jan 2015 13:27:38 +0000 Subject: [PATCH] If user presses unpause when not ready and others not ready, set to ready rather than unpausing --- syncplay/client.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index efe5a04..f7ffcfb 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -162,12 +162,19 @@ class SyncplayClient(object): pauseChange, seeked = self._determinePlayerStateChange(paused, position) self._playerPosition = position self._playerPaused = paused - if pauseChange and utils.meetsMinVersion(self.serverVersion, constants.USER_READY_MIN_VERSION) and self.userlist.currentUser.canControl(): - lastPausedDiff = time.time() - self.lastPausedOnLeaveTime if self.lastPausedOnLeaveTime else None - if lastPausedDiff is not None and lastPausedDiff < constants.LAST_PAUSED_DIFF_THRESHOLD: - self.lastPausedOnLeaveTime = None + if pauseChange and utils.meetsMinVersion(self.serverVersion, constants.USER_READY_MIN_VERSION): + if not paused and not self.userlist.currentUser.isReady() and not self.userlist.areAllOtherUsersInRoomReady(): + paused = True + self._player.setPaused(paused) + self._playerPaused = paused + self.changeReadyState(True, manuallyInitiated=True) + pauseChange = False else: - self.changeReadyState(not self.getPlayerPaused(), manuallyInitiated=False) + lastPausedDiff = time.time() - self.lastPausedOnLeaveTime if self.lastPausedOnLeaveTime else None + if lastPausedDiff is not None and lastPausedDiff < constants.LAST_PAUSED_DIFF_THRESHOLD: + self.lastPausedOnLeaveTime = None + else: + self.changeReadyState(not self.getPlayerPaused(), manuallyInitiated=False) if self._lastGlobalUpdate: self._lastPlayerUpdate = time.time() if (pauseChange or seeked) and self._protocol: @@ -882,6 +889,12 @@ class SyncplayUserlist(object): return False return True + def areAllOtherUsersInRoomReady(self): + for user in self._users.itervalues(): + if user.room == self.currentUser.room and user.isReady() == False: + return False + return True + def readyUserCount(self): readyCount = 0 if self.currentUser.isReady():