From e7b3547c3bfac9bef2cfab11695124560c15a95e Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 00:33:38 +0200 Subject: [PATCH 1/9] Fixed mplayer on windows --- syncplay/players/mplayer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index f455dbd..43cfbab 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -28,6 +28,7 @@ class LineProcessProtocol(ProcessProtocol): def outReceived(self, data): self._leftover_out, lines = self.parse_lines(self._leftover_out, data) for line in lines: + line = line.replace('\r', "") self.outLineReceived(line) def errReceived(self, data): From fae59d8b6d6439b28c2b4d50a1ca096c6ffb974b Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 00:35:33 +0200 Subject: [PATCH 2/9] TODO removed --- syncplay/players/mplayer.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index 43cfbab..092b5fe 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -149,8 +149,6 @@ class MplayerProtocol(LineProcessProtocol): self.setUpFileInPlayer() def set_paused(self, value): - # docs say i can't set "pause" property, but it works... - # no, Fluxid, it doesn't on Windows, fuck you. TODO: self.send_set_property('pause', 'yes' if value else 'no') def send_get_paused(self): From fd7032800972d6112a1a6dc1e2b7e00d98da6839 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 00:53:28 +0200 Subject: [PATCH 3/9] Refactoring --- syncplay/server.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/syncplay/server.py b/syncplay/server.py index a1f42af..8efe6e2 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -308,9 +308,8 @@ class SyncFactory(Factory): self.pause_change_by = watcher else: pause_changed = False - position, _ = self.find_position(watcher.room) - self.send_state_to(watcher, position, curtime) # To jest kurwa bez sensu - self.broadcast_room(watcher, lambda receiver: self.send_state_to(receiver, position, curtime) if pause_changed or (curtime-receiver.last_update_sent) > self.update_time_limit else False) + self.send_state_to(watcher) # To jest kurwa bez sensu + self.broadcast_room(watcher, lambda receiver: self.send_state_to(receiver, position) if pause_changed or (curtime-receiver.last_update_sent) > self.update_time_limit else False) def seek(self, watcher_proto, counter, ctime, position): watcher = self.watchers.get(watcher_proto) @@ -328,13 +327,12 @@ class SyncFactory(Factory): receiver.max_position = position receiver.watcher_proto.sender.send_seek(curtime-receiver.time_offset, position, watcher.name) - def send_state_to(self, watcher, position=None, curtime=None): + def send_state_to(self, watcher, position=None): minWatcher = None if position is None: position, minWatcher = self.find_position(watcher.room) minWatcher = minWatcher.name if minWatcher else None - if curtime is None: - curtime = time.time() + curtime = time.time() ctime = curtime - watcher.time_offset if self.pause_change_by: watcher.watcher_proto.sender.send_state(watcher.counter, ctime, self.paused[watcher.room], position, self.pause_change_by.name) From 9c3151145a12aa962af3518c363ea3d75e7eb2ae Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 00:53:47 +0200 Subject: [PATCH 4/9] Comment removed --- syncplay/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/server.py b/syncplay/server.py index 8efe6e2..f3f6999 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -308,7 +308,7 @@ class SyncFactory(Factory): self.pause_change_by = watcher else: pause_changed = False - self.send_state_to(watcher) # To jest kurwa bez sensu + self.send_state_to(watcher) self.broadcast_room(watcher, lambda receiver: self.send_state_to(receiver, position) if pause_changed or (curtime-receiver.last_update_sent) > self.update_time_limit else False) def seek(self, watcher_proto, counter, ctime, position): From 88c3fc433e131eabad6f55fc50fecf685605b432 Mon Sep 17 00:00:00 2001 From: Et0h Date: Sat, 29 Sep 2012 01:51:45 +0200 Subject: [PATCH 5/9] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ac8bc61..e0ea477 100644 --- a/README.md +++ b/README.md @@ -157,5 +157,5 @@ You can report bugs through https://github.com/Uriziel/syncplay/issues but first You might also be able to discuss your problem through Internet Relay Chat (IRC). The #Syncplay channel is on the irc.rizon.net server. ### Known issues -1. PROTIP: Don't change your system time while Syncplay is running as it confuses the sync. It is known. -2. PROTIP: Don't try to jump less than 8 seconds as it won't register properly. It is known. \ No newline at end of file +1. Changing your system time while Syncplay is running confuses the sync. PROTIP: Don't do it. +2. Syncplay cannot properly handle a seek that is within 8 seconds of the current position. PROTIP: Don't do it. \ No newline at end of file From 94dc31d1c74594ce552f7d99e1d295ec74861231 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 09:14:39 +0200 Subject: [PATCH 6/9] Ver up, updated mpc readiness checking --- syncplay/__init__.py | 2 +- syncplay/players/mpc.py | 42 +++++++++++++++++------------------------ 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index fb727de..79c8ae3 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,3 +1,3 @@ -version = '0.6.6' +version = '0.7.0' milestone = 'Clara' projectURL = 'http://uriziel.github.com/syncplay/' \ No newline at end of file diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py index fc0c4b0..b22aedc 100644 --- a/syncplay/players/mpc.py +++ b/syncplay/players/mpc.py @@ -12,7 +12,7 @@ class MPCHCAPIPlayer(object): self.mpc_api.callbacks.on_mpc_closed = lambda: self.__syncplayClient.stop(False) self.mpc_api.callbacks.on_fileStateChange = lambda _: self.lockAsking() self.mpc_api.callbacks.on_update_playstate = lambda _: self.unlockAsking() - self.preventAsking = False + self.preventAsking = True self.askLock = threading.RLock() self.playerStateChangeLock = threading.RLock() @@ -27,24 +27,25 @@ class MPCHCAPIPlayer(object): def set_speed(self, value): pass - - def testMpcReady(self): - try: - self.playerStateChangeLock.acquire() - self.mpc_api.ask_for_current_position() - except MPC_API.PlayerNotReadyException: + + def __testMpcReady(self): + i = 0 + while self.preventAsking: + if(i >= 100): + raise Exception("Player failed opening file") + i+=1 time.sleep(0.1) - self.testMpcReady() - finally: - self.playerStateChangeLock.release() def make_ping(self): - self.testMpcReady() - self.mpc_api.callbacks.on_update_filename = self.handleUpdatedFilename - self.__syncplayClient.initPlayer(self) - self.handleUpdatedFilename(self.mpc_api.fileplaying) - self.ask_for_status() - + try: + self.__testMpcReady() + self.mpc_api.callbacks.on_update_filename = self.handleUpdatedFilename + self.__syncplayClient.initPlayer(self) + self.handleUpdatedFilename(self.mpc_api.fileplaying) + self.ask_for_status() + except: + pass + def display_message(self, message): try: self.mpc_api.send_osd(message, 2, 3000) @@ -80,15 +81,6 @@ class MPCHCAPIPlayer(object): self.playerStateChangeLock.release() - def __askForPositionUntilPlayerReady(self): - if(self.__syncplayClient.running == False): - return 0 - try: - return self.mpc_api.ask_for_current_position() - except MPC_API.PlayerNotReadyException: - time.sleep(0.1) - return self.__askForPositionUntilPlayerReady() - def ask_for_status(self): try: if(not self.preventAsking and self.mpc_api.is_file_ready() and self.askLock.acquire(0)): From b552f3d741bd4962bd5d39e8252b4b1629d4bb2a Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 09:14:46 +0200 Subject: [PATCH 7/9] refactoring --- syncplay/players/mplayer.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index 092b5fe..a8a507e 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -92,8 +92,7 @@ class MplayerProtocol(LineProcessProtocol): def prepare_player(self): - self.set_paused(True) - + self.set_paused(True) self.set_position(0) self.send_get_filename() self.send_get_length() From 8fd929512b8af771931d66021ed2e8001e0c58eb Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 09:30:15 +0200 Subject: [PATCH 8/9] Updated messages --- syncplay/client.py | 5 +++-- syncplay/players/mpc.py | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index b533b93..12a5447 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -260,6 +260,8 @@ class SyncplayClientManager(object): reactor.run() def stop(self, promptForAction = True): + if(promptForAction): + self.ui.promptFor("Press enter to exit\n") if not self.running: return self.running = False @@ -270,8 +272,7 @@ class SyncplayClientManager(object): if self.player: self.player.drop() reactor.callLater(0.1, reactor.stop) - if(promptForAction): - self.ui.promptFor("Press enter to exit") + def checkIfFileMatchesOthers(self): notMatchingList = self.users.getUsersWithNotMatchingFilenames() diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py index b22aedc..eda3cf8 100644 --- a/syncplay/players/mpc.py +++ b/syncplay/players/mpc.py @@ -43,9 +43,11 @@ class MPCHCAPIPlayer(object): self.__syncplayClient.initPlayer(self) self.handleUpdatedFilename(self.mpc_api.fileplaying) self.ask_for_status() - except: - pass - + except Exception, err: + self.__syncplayClient.ui.showMessage(err.message) + self.__syncplayClient.stop() + + def display_message(self, message): try: self.mpc_api.send_osd(message, 2, 3000) From 25ab66e0adf3c1bfaff501ae95c404865c707d9d Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 29 Sep 2012 09:37:37 +0200 Subject: [PATCH 9/9] You can add path to mpc without stating "mpc-hc.exe" --- syncplay/ConfigurationGetter.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/syncplay/ConfigurationGetter.py b/syncplay/ConfigurationGetter.py index b47dfee..1c39d71 100644 --- a/syncplay/ConfigurationGetter.py +++ b/syncplay/ConfigurationGetter.py @@ -128,6 +128,12 @@ class MPCConfigurationGetter(ConfigurationGetter): if(os.path.isfile(self._args.mpc_path)): if(self._args.mpc_path[-10:] == 'mpc-hc.exe' or self._args.mpc_path[-12:] == 'mpc-hc64.exe'): return True + if(os.path.isfile(self._args.mpc_path + "\\mpc-hc.exe")): + self._args.mpc_path += "\\mpc-hc.exe" + return True + if(os.path.isfile(self._args.mpc_path + "\\mpc-hc64.exe")): + self._args.mpc_path += "\\mpc-hc64.exe" + return True return False def _valuesToReadFromConfig(self, section_name):