diff options
| author | RblSb <msrblsb@gmail.com> | 2020-05-13 09:01:40 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-05-13 09:01:40 +0300 |
| commit | aeace14869947769a2688008e05cf7f51e9cf1a4 (patch) | |
| tree | 40aa066f8a966cafe779891b033269615cd0ced5 /src/client/Main.hx | |
| parent | 2d82ca5f1049fb332b521691c29b9d789d08f690 (diff) | |
Sync leader on video start/refresh
Diffstat (limited to 'src/client/Main.hx')
| -rw-r--r-- | src/client/Main.hx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/client/Main.hx b/src/client/Main.hx index deeb2ec..0844636 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -25,6 +25,7 @@ class Main { static inline var SETTINGS_VERSION = 2; public final settings:ClientSettings; public var isSyncActive = true; + public var forceSyncNextTick = false; final clients:Array<Client> = []; var pageTitle = document.title; final host:String; @@ -371,6 +372,8 @@ class Main { case VideoLoaded: player.setTime(0); player.play(); + // try to sync leader after with GetTime events + if (isLeader() && !player.isVideoLoaded()) forceSyncNextTick = true; case RemoveVideo: player.removeItem(data.removeVideo.url); @@ -401,13 +404,14 @@ class Main { final synchThreshold = settings.synchThreshold; final newTime = data.getTime.time; final time = player.getTime(); - if (isLeader()) { + if (isLeader() && !forceSyncNextTick) { // if video is loading on leader // move other clients back in time if (Math.abs(time - newTime) < synchThreshold) return; player.setTime(time, false); return; } + if (player.isVideoLoaded()) forceSyncNextTick = false; if (player.getDuration() < player.getTime()) return; if (!data.getTime.paused) player.play(); else player.pause(); |
