Stefan Schuermans commited on 2013-11-23 20:48:50
Showing 1 changed files, with 19 additions and 2 deletions.
| ... | ... |
@@ -10,9 +10,10 @@ import os |
| 10 | 10 |
from gi.repository import Gtk |
| 11 | 11 |
import gobject |
| 12 | 12 |
import pango |
| 13 |
+import socket |
|
| 14 |
+import struct |
|
| 13 | 15 |
import sys |
| 14 | 16 |
import time |
| 15 |
- |
|
| 16 | 17 |
import playlist |
| 17 | 18 |
import time_fmt |
| 18 | 19 |
|
| ... | ... |
@@ -57,7 +58,11 @@ class SyncGui: |
| 57 | 58 |
self.stDuration = 0 # current entry has zero size |
| 58 | 59 |
self.stPosition = 0 # at begin of current entry |
| 59 | 60 |
self.stPlaying = False # not playing |
| 61 |
+ self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
|
| 62 |
+ self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) |
|
| 63 |
+ self.sock.connect(("255.255.255.255", 5740))
|
|
| 60 | 64 |
gobject.timeout_add(10, self.onTimer10ms) |
| 65 |
+ gobject.timeout_add(100, self.onTimer100ms) |
|
| 61 | 66 |
self.updateEntry() |
| 62 | 67 |
self.updateButtonVisibility() |
| 63 | 68 |
|
| ... | ... |
@@ -262,7 +267,19 @@ class SyncGui: |
| 262 | 267 |
self.updateEntry() |
| 263 | 268 |
else: |
| 264 | 269 |
self.updatePosition() |
| 265 |
- return True |
|
| 270 |
+ return True # call again |
|
| 271 |
+ |
|
| 272 |
+ def onTimer100ms(self): |
|
| 273 |
+ """timer callback, every 100ms""" |
|
| 274 |
+ # send sync packet |
|
| 275 |
+ flags = 0 |
|
| 276 |
+ if self.stPlaying: |
|
| 277 |
+ flags = flags | 1 |
|
| 278 |
+ name = self.stName |
|
| 279 |
+ pos_ms = round(self.stPosition * 1000) |
|
| 280 |
+ data = "PoSy" + struct.pack("!I64sI", flags, name, pos_ms)
|
|
| 281 |
+ self.sock.send(data) |
|
| 282 |
+ return True # call again |
|
| 266 | 283 |
|
| 267 | 284 |
# main application entry point |
| 268 | 285 |
if __name__ == "__main__": |
| 269 | 286 |