Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions patches/chromium/.patches
Original file line number Diff line number Diff line change
Expand Up @@ -197,3 +197,5 @@ gin_cap_v8_coderange_to_64mb_on_low-memory_systems.patch
brightsign_fix_black_transparent_hole_being_shown_before_video.patch
feat_map_krolealwaysontop_z-order_level_to_always-on-top_surface.patch
feat_brightsign_add_setattribute_and_setsyncparams_os-21421.patch
os-20711_repaint_on_late_video_size_changed.patch
fix_brightsign_fire_timechanged_for_equal-time-seeks_on-seek_os-21551.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tariq Bashir <tbashir@brightsign.biz>
Date: Wed, 15 Jul 2026 12:00:35 +0100
Subject: fix: ensure BrightSign seek completion fires TimeChanged OS-21551

Blink expects a TimeChanged notification for every completed seek,
including when the resolved media time remains unchanged.

Snapshot current_time_ before updating the playback position. If the
normal update path leaves it unchanged, explicitly notify Blink. This
avoids relying on equality with the raw reported timestamp and covers
cases where the reported time is clamped or rounded.

Normal seeks continue to emit a single notification through
PlaybackPositionUpdatedCallback, while unchanged-time seeks use the
fallback.

diff --git a/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc b/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
index 171de1af1b122f112fddf495a991e5d75615e19c..2fce1e846dec5b4b773ca4a74382a949faa4737c 100644
--- a/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
+++ b/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
@@ -1382,8 +1382,18 @@ void WebMediaPlayerBrightsign::TextureMailboxReadyCallback(
void WebMediaPlayerBrightsign::SeekCompletedCallback(std::chrono::microseconds current_time) {
VLOG(1) << __func__;
DCHECK(main_task_runner_->BelongsToCurrentThread());
+
+ const double previous_current_time = current_time_;
+
seeking_ = false;
PlaybackPositionUpdatedCallback(current_time, decode_stats_);
+
+ // Blink expects a TimeChanged() notification in response to every seek.
+ // Send one if the normal playback position update did not change the time.
+ if (ready_state_ != kReadyStateHaveNothing &&
+ current_time_ == previous_current_time) {
+ client_->TimeChanged();
+ }
}

void WebMediaPlayerBrightsign::VideoSizeChangedCallback(uint32_t width,
25 changes: 25 additions & 0 deletions patches/chromium/os-20711_repaint_on_late_video_size_changed.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: JDye <jdye@brightsign.biz>
Date: Thu, 9 Jul 2026 14:40:00 +0000
Subject: fix(video): repaint after late size change OS-20711

When a late VideoSizeChanged callback arrives after the player is already in
HaveEnoughData, we can update frame/layer state without forcing a repaint.

Trigger a repaint in that state so the resized video becomes visible
immediately.

diff --git a/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc b/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
index 4dd2c1cd5c9ed72663d79ae95e3f24b79682ca33..171de1af1b122f112fddf495a991e5d75615e19c 100644
--- a/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
+++ b/third_party/blink/renderer/platform/media/brightsign/web_media_player_brightsign.cc
@@ -1408,6 +1408,9 @@ void WebMediaPlayerBrightsign::VideoSizeChangedCallback(uint32_t width,
compositor_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&WebMediaPlayerBrightsign::DidReceiveFrame, weak_this_));
StartFrameReadyTimerIfRequired();
+
+ client_->SizeChanged();
+ client_->DidPlayerSizeChange(NaturalSize());
}

void WebMediaPlayerBrightsign::PlaybackPositionUpdatedCallback(
Loading