Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MBetterc
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mbetter
MBetterc
Commits
f61795e5
Commit
f61795e5
authored
Sep 08, 2025
by
Stefy Lanza (nextime / spora )
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed GREEN SCREEN FIX and LOOP DEBUG logging from ERROR to DEBUG level
parent
91f5dece
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
56 deletions
+56
-56
player.py
mbetterclient/qt_player/player.py
+56
-56
No files found.
mbetterclient/qt_player/player.py
View file @
f61795e5
...
@@ -377,7 +377,7 @@ class OverlayWebView(QWebEngineView):
...
@@ -377,7 +377,7 @@ class OverlayWebView(QWebEngineView):
# CRITICAL FIX: Force visibility recovery after template load
# CRITICAL FIX: Force visibility recovery after template load
if
was_visible
and
not
self
.
isVisible
():
if
was_visible
and
not
self
.
isVisible
():
logger
.
error
(
f
"GREEN SCREEN FIX: Recovering overlay visibility after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Recovering overlay visibility after template load"
)
self
.
show
()
self
.
show
()
self
.
raise_
()
self
.
raise_
()
...
@@ -401,18 +401,18 @@ class OverlayWebView(QWebEngineView):
...
@@ -401,18 +401,18 @@ class OverlayWebView(QWebEngineView):
"""Ensure overlay maintains proper visibility after template load"""
"""Ensure overlay maintains proper visibility after template load"""
try
:
try
:
if
should_be_visible
and
not
self
.
isVisible
():
if
should_be_visible
and
not
self
.
isVisible
():
logger
.
error
(
f
"GREEN SCREEN FIX: Overlay lost visibility after template load, forcing recovery"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Overlay lost visibility after template load, forcing recovery"
)
self
.
show
()
self
.
show
()
self
.
raise_
()
self
.
raise_
()
logger
.
error
(
f
"GREEN SCREEN FIX: Overlay visibility recovered"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Overlay visibility recovered"
)
# Check parent overlay window visibility as well
# Check parent overlay window visibility as well
parent
=
self
.
parent
()
parent
=
self
.
parent
()
if
parent
and
should_be_visible
and
not
parent
.
isVisible
():
if
parent
and
should_be_visible
and
not
parent
.
isVisible
():
logger
.
error
(
f
"GREEN SCREEN FIX: Parent overlay window lost visibility, forcing recovery"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Parent overlay window lost visibility, forcing recovery"
)
parent
.
show
()
parent
.
show
()
parent
.
raise_
()
parent
.
raise_
()
logger
.
error
(
f
"GREEN SCREEN FIX: Parent overlay window visibility recovered"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Parent overlay window visibility recovered"
)
# CRITICAL FIX: Protect video rendering context during template operations
# CRITICAL FIX: Protect video rendering context during template operations
self
.
_protect_video_context_during_template_load
()
self
.
_protect_video_context_during_template_load
()
...
@@ -426,13 +426,13 @@ class OverlayWebView(QWebEngineView):
...
@@ -426,13 +426,13 @@ class OverlayWebView(QWebEngineView):
if
hasattr
(
self
,
'parent'
)
and
self
.
parent
():
if
hasattr
(
self
,
'parent'
)
and
self
.
parent
():
parent_window
=
self
.
parent
()
parent_window
=
self
.
parent
()
if
hasattr
(
parent_window
,
'media_player'
)
and
parent_window
.
media_player
:
if
hasattr
(
parent_window
,
'media_player'
)
and
parent_window
.
media_player
:
logger
.
error
(
f
"GREEN SCREEN FIX: Protecting video context during template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Protecting video context during template load"
)
media_player
=
parent_window
.
media_player
media_player
=
parent_window
.
media_player
# Store current video output
# Store current video output
current_output
=
media_player
.
videoOutput
()
current_output
=
media_player
.
videoOutput
()
if
current_output
:
if
current_output
:
logger
.
error
(
f
"GREEN SCREEN FIX: Video output preserved during template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video output preserved during template load"
)
# Force repaint of video widget
# Force repaint of video widget
if
hasattr
(
parent_window
,
'video_widget'
)
and
parent_window
.
video_widget
:
if
hasattr
(
parent_window
,
'video_widget'
)
and
parent_window
.
video_widget
:
...
@@ -440,9 +440,9 @@ class OverlayWebView(QWebEngineView):
...
@@ -440,9 +440,9 @@ class OverlayWebView(QWebEngineView):
if
video_widget
:
if
video_widget
:
video_widget
.
repaint
()
video_widget
.
repaint
()
video_widget
.
update
()
video_widget
.
update
()
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget repainted during template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget repainted during template load"
)
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
error
(
f
"GREEN SCREEN FIX: Failed to protect video context: {e}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Failed to protect video context: {e}"
)
def
reload_current_template
(
self
):
def
reload_current_template
(
self
):
"""Reload the current template"""
"""Reload the current template"""
...
@@ -1306,7 +1306,7 @@ class PlayerWindow(QMainWindow):
...
@@ -1306,7 +1306,7 @@ class PlayerWindow(QMainWindow):
logger
.
info
(
f
"Media player source set to: {url.toString()}"
)
logger
.
info
(
f
"Media player source set to: {url.toString()}"
)
# CRITICAL FIX: Protect video rendering context during template operations
# CRITICAL FIX: Protect video rendering context during template operations
logger
.
error
(
f
"GREEN SCREEN FIX: Protecting video rendering context during template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Protecting video rendering context during template load"
)
# Store video widget state before template operations
# Store video widget state before template operations
video_widget
=
None
video_widget
=
None
...
@@ -1314,25 +1314,25 @@ class PlayerWindow(QMainWindow):
...
@@ -1314,25 +1314,25 @@ class PlayerWindow(QMainWindow):
video_widget
=
self
.
video_widget
.
get_video_widget
()
video_widget
=
self
.
video_widget
.
get_video_widget
()
if
video_widget
:
if
video_widget
:
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget state before template load - visible: {video_widget.isVisible()}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget state before template load - visible: {video_widget.isVisible()}"
)
# Load specified template or reload current template when playing a video
# Load specified template or reload current template when playing a video
if
hasattr
(
self
,
'window_overlay'
)
and
isinstance
(
self
.
window_overlay
,
OverlayWebView
):
if
hasattr
(
self
,
'window_overlay'
)
and
isinstance
(
self
.
window_overlay
,
OverlayWebView
):
if
template_name
:
if
template_name
:
logger
.
error
(
f
"GREEN SCREEN FIX: Loading template while protecting video context: {template_name}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Loading template while protecting video context: {template_name}"
)
self
.
window_overlay
.
load_template
(
template_name
)
self
.
window_overlay
.
load_template
(
template_name
)
logger
.
info
(
f
"Loaded template '{template_name}' for video playback"
)
logger
.
info
(
f
"Loaded template '{template_name}' for video playback"
)
else
:
else
:
logger
.
error
(
f
"GREEN SCREEN FIX: Reloading template while protecting video context"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Reloading template while protecting video context"
)
self
.
window_overlay
.
reload_current_template
()
self
.
window_overlay
.
reload_current_template
()
logger
.
info
(
"Reloaded current overlay template for video playback"
)
logger
.
info
(
"Reloaded current overlay template for video playback"
)
# CRITICAL FIX: Force video widget refresh after template operations
# CRITICAL FIX: Force video widget refresh after template operations
if
video_widget
:
if
video_widget
:
logger
.
error
(
f
"GREEN SCREEN FIX: Forcing video widget refresh after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Forcing video widget refresh after template load"
)
video_widget
.
repaint
()
video_widget
.
repaint
()
video_widget
.
update
()
video_widget
.
update
()
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget state after template load - visible: {video_widget.isVisible()}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget state after template load - visible: {video_widget.isVisible()}"
)
# Update overlay with video info using safe method
# Update overlay with video info using safe method
overlay_data
=
template_data
or
{}
overlay_data
=
template_data
or
{}
...
@@ -1472,7 +1472,7 @@ class PlayerWindow(QMainWindow):
...
@@ -1472,7 +1472,7 @@ class PlayerWindow(QMainWindow):
def
on_media_status_changed
(
self
,
status
):
def
on_media_status_changed
(
self
,
status
):
"""Handle media status changes and loop control"""
"""Handle media status changes and loop control"""
logger
.
error
(
f
"LOOP DEBUG: Media status changed to: {status} ({status.name if hasattr(status, 'name') else 'unknown'})"
)
logger
.
debug
(
f
"LOOP DEBUG: Media status changed to: {status} ({status.name if hasattr(status, 'name') else 'unknown'})"
)
if
status
==
QMediaPlayer
.
MediaStatus
.
LoadedMedia
:
if
status
==
QMediaPlayer
.
MediaStatus
.
LoadedMedia
:
# Media loaded successfully - use safe update
# Media loaded successfully - use safe update
...
@@ -1484,48 +1484,48 @@ class PlayerWindow(QMainWindow):
...
@@ -1484,48 +1484,48 @@ class PlayerWindow(QMainWindow):
elif
status
==
QMediaPlayer
.
MediaStatus
.
EndOfMedia
:
elif
status
==
QMediaPlayer
.
MediaStatus
.
EndOfMedia
:
# Handle end of media for loop functionality
# Handle end of media for loop functionality
logger
.
error
(
f
"LOOP DEBUG: END OF MEDIA DETECTED!"
)
logger
.
debug
(
f
"LOOP DEBUG: END OF MEDIA DETECTED!"
)
logger
.
error
(
f
"LOOP DEBUG: Loop enabled: {self.loop_enabled}"
)
logger
.
debug
(
f
"LOOP DEBUG: Loop enabled: {self.loop_enabled}"
)
logger
.
error
(
f
"LOOP DEBUG: Infinite loop: {self.infinite_loop}"
)
logger
.
debug
(
f
"LOOP DEBUG: Infinite loop: {self.infinite_loop}"
)
logger
.
error
(
f
"LOOP DEBUG: Current iteration: {self.current_loop_iteration}"
)
logger
.
debug
(
f
"LOOP DEBUG: Current iteration: {self.current_loop_iteration}"
)
logger
.
error
(
f
"LOOP DEBUG: Loop count: {self.loop_count}"
)
logger
.
debug
(
f
"LOOP DEBUG: Loop count: {self.loop_count}"
)
if
self
.
loop_enabled
:
if
self
.
loop_enabled
:
logger
.
error
(
f
"LOOP DEBUG: Processing loop restart logic..."
)
logger
.
debug
(
f
"LOOP DEBUG: Processing loop restart logic..."
)
if
self
.
infinite_loop
:
if
self
.
infinite_loop
:
# Infinite loop - restart immediately
# Infinite loop - restart immediately
self
.
current_loop_iteration
+=
1
self
.
current_loop_iteration
+=
1
logger
.
error
(
f
"LOOP DEBUG: INFINITE LOOP - Starting iteration {self.current_loop_iteration}"
)
logger
.
debug
(
f
"LOOP DEBUG: INFINITE LOOP - Starting iteration {self.current_loop_iteration}"
)
self
.
_restart_video
()
self
.
_restart_video
()
elif
self
.
loop_count
>
0
and
self
.
current_loop_iteration
<
self
.
loop_count
:
elif
self
.
loop_count
>
0
and
self
.
current_loop_iteration
<
self
.
loop_count
:
# Finite loop - check if we should continue
# Finite loop - check if we should continue
self
.
current_loop_iteration
+=
1
self
.
current_loop_iteration
+=
1
logger
.
error
(
f
"LOOP DEBUG: FINITE LOOP - Starting iteration {self.current_loop_iteration}/{self.loop_count}"
)
logger
.
debug
(
f
"LOOP DEBUG: FINITE LOOP - Starting iteration {self.current_loop_iteration}/{self.loop_count}"
)
self
.
_restart_video
()
self
.
_restart_video
()
else
:
else
:
logger
.
error
(
f
"LOOP DEBUG: Loop completed after {self.current_loop_iteration} iterations - stopping playback"
)
logger
.
debug
(
f
"LOOP DEBUG: Loop completed after {self.current_loop_iteration} iterations - stopping playback"
)
self
.
loop_enabled
=
False
self
.
loop_enabled
=
False
else
:
else
:
logger
.
error
(
f
"LOOP DEBUG: No loop enabled - playback finished"
)
logger
.
debug
(
f
"LOOP DEBUG: No loop enabled - playback finished"
)
def
_restart_video
(
self
):
def
_restart_video
(
self
):
"""Restart video playback for looping"""
"""Restart video playback for looping"""
try
:
try
:
logger
.
error
(
f
"LOOP DEBUG: _restart_video called"
)
logger
.
debug
(
f
"LOOP DEBUG: _restart_video called"
)
logger
.
error
(
f
"LOOP DEBUG: Current file path: {self.current_file_path}"
)
logger
.
debug
(
f
"LOOP DEBUG: Current file path: {self.current_file_path}"
)
logger
.
error
(
f
"LOOP DEBUG: Media player state: {self.media_player.playbackState()}"
)
logger
.
debug
(
f
"LOOP DEBUG: Media player state: {self.media_player.playbackState()}"
)
if
self
.
current_file_path
:
if
self
.
current_file_path
:
logger
.
error
(
f
"LOOP DEBUG: Restarting video for loop: {self.current_file_path}"
)
logger
.
debug
(
f
"LOOP DEBUG: Restarting video for loop: {self.current_file_path}"
)
url
=
QUrl
.
fromLocalFile
(
self
.
current_file_path
)
url
=
QUrl
.
fromLocalFile
(
self
.
current_file_path
)
logger
.
error
(
f
"LOOP DEBUG: Created QUrl: {url.toString()}"
)
logger
.
debug
(
f
"LOOP DEBUG: Created QUrl: {url.toString()}"
)
self
.
media_player
.
setSource
(
url
)
self
.
media_player
.
setSource
(
url
)
logger
.
error
(
f
"LOOP DEBUG: Set media player source"
)
logger
.
debug
(
f
"LOOP DEBUG: Set media player source"
)
self
.
media_player
.
play
()
self
.
media_player
.
play
()
logger
.
error
(
f
"LOOP DEBUG: Called media player play()"
)
logger
.
debug
(
f
"LOOP DEBUG: Called media player play()"
)
logger
.
error
(
f
"LOOP DEBUG: Media player state after play(): {self.media_player.playbackState()}"
)
logger
.
debug
(
f
"LOOP DEBUG: Media player state after play(): {self.media_player.playbackState()}"
)
# Update overlay to show loop status
# Update overlay to show loop status
if
hasattr
(
self
,
'window_overlay'
):
if
hasattr
(
self
,
'window_overlay'
):
...
@@ -1538,11 +1538,11 @@ class PlayerWindow(QMainWindow):
...
@@ -1538,11 +1538,11 @@ class PlayerWindow(QMainWindow):
status_data
=
{
'subtitle'
:
f
'Playing - {loop_info}'
}
status_data
=
{
'subtitle'
:
f
'Playing - {loop_info}'
}
self
.
_update_overlay_safe
(
overlay_view
,
status_data
)
self
.
_update_overlay_safe
(
overlay_view
,
status_data
)
logger
.
error
(
f
"LOOP DEBUG: Updated overlay with loop info: {loop_info}"
)
logger
.
debug
(
f
"LOOP DEBUG: Updated overlay with loop info: {loop_info}"
)
else
:
else
:
logger
.
error
(
"LOOP DEBUG: No current file path available for restart"
)
logger
.
error
(
"LOOP DEBUG: No current file path available for restart"
)
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
error
(
f
"LOOP DEBUG: Failed to restart video for loop: {e}"
)
logger
.
debug
(
f
"LOOP DEBUG: Failed to restart video for loop: {e}"
)
def
update_overlay_periodically
(
self
):
def
update_overlay_periodically
(
self
):
"""Periodic overlay updates with WebEngine safety checks"""
"""Periodic overlay updates with WebEngine safety checks"""
...
@@ -1735,17 +1735,17 @@ class PlayerWindow(QMainWindow):
...
@@ -1735,17 +1735,17 @@ class PlayerWindow(QMainWindow):
# CRITICAL FIX: Ensure WebEngine overlay visibility before update
# CRITICAL FIX: Ensure WebEngine overlay visibility before update
if
not
overlay_view
.
isVisible
():
if
not
overlay_view
.
isVisible
():
logger
.
error
(
f
"GREEN SCREEN FIX: WebEngine overlay not visible, forcing visibility recovery"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: WebEngine overlay not visible, forcing visibility recovery"
)
overlay_view
.
show
()
overlay_view
.
show
()
overlay_view
.
raise_
()
overlay_view
.
raise_
()
logger
.
error
(
f
"GREEN SCREEN FIX: WebEngine overlay visibility forced during update"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: WebEngine overlay visibility forced during update"
)
# Also ensure parent overlay window is visible
# Also ensure parent overlay window is visible
if
hasattr
(
self
,
'overlay_window'
)
and
self
.
overlay_window
and
not
self
.
overlay_window
.
isVisible
():
if
hasattr
(
self
,
'overlay_window'
)
and
self
.
overlay_window
and
not
self
.
overlay_window
.
isVisible
():
logger
.
error
(
f
"GREEN SCREEN FIX: Parent overlay window not visible, forcing visibility"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Parent overlay window not visible, forcing visibility"
)
self
.
overlay_window
.
show
()
self
.
overlay_window
.
show
()
self
.
overlay_window
.
raise_
()
self
.
overlay_window
.
raise_
()
logger
.
error
(
f
"GREEN SCREEN FIX: Parent overlay window visibility forced"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Parent overlay window visibility forced"
)
if
self
.
_is_webengine_ready
(
overlay_view
):
if
self
.
_is_webengine_ready
(
overlay_view
):
logger
.
debug
(
f
"GREEN SCREEN DEBUG: WebEngine ready, updating overlay"
)
logger
.
debug
(
f
"GREEN SCREEN DEBUG: WebEngine ready, updating overlay"
)
...
@@ -1770,7 +1770,7 @@ class PlayerWindow(QMainWindow):
...
@@ -1770,7 +1770,7 @@ class PlayerWindow(QMainWindow):
def
_protect_video_context_after_template_load
(
self
):
def
_protect_video_context_after_template_load
(
self
):
"""Protect video rendering context after template loading operations"""
"""Protect video rendering context after template loading operations"""
try
:
try
:
logger
.
error
(
f
"GREEN SCREEN FIX: Protecting video context after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Protecting video context after template load"
)
# Force repaint of video widget
# Force repaint of video widget
if
hasattr
(
self
,
'video_widget'
)
and
hasattr
(
self
.
video_widget
,
'get_video_widget'
):
if
hasattr
(
self
,
'video_widget'
)
and
hasattr
(
self
.
video_widget
,
'get_video_widget'
):
...
@@ -1778,19 +1778,19 @@ class PlayerWindow(QMainWindow):
...
@@ -1778,19 +1778,19 @@ class PlayerWindow(QMainWindow):
if
video_widget
:
if
video_widget
:
video_widget
.
repaint
()
video_widget
.
repaint
()
video_widget
.
update
()
video_widget
.
update
()
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget repainted after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget repainted after template load"
)
# Force media player to refresh video output
# Force media player to refresh video output
if
hasattr
(
self
,
'media_player'
):
if
hasattr
(
self
,
'media_player'
):
logger
.
error
(
f
"GREEN SCREEN FIX: Refreshing media player video output after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Refreshing media player video output after template load"
)
current_output
=
self
.
media_player
.
videoOutput
()
current_output
=
self
.
media_player
.
videoOutput
()
if
current_output
:
if
current_output
:
# Force video output refresh by briefly setting to None and back
# Force video output refresh by briefly setting to None and back
self
.
media_player
.
setVideoOutput
(
None
)
self
.
media_player
.
setVideoOutput
(
None
)
self
.
media_player
.
setVideoOutput
(
current_output
)
self
.
media_player
.
setVideoOutput
(
current_output
)
logger
.
error
(
f
"GREEN SCREEN FIX: Media player video output refreshed after template load"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Media player video output refreshed after template load"
)
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
error
(
f
"GREEN SCREEN FIX: Failed to protect video context after template load: {e}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Failed to protect video context after template load: {e}"
)
def
_send_safe_overlay_update
(
self
,
overlay_view
,
data
):
def
_send_safe_overlay_update
(
self
,
overlay_view
,
data
):
"""Send overlay update with additional safety checks"""
"""Send overlay update with additional safety checks"""
...
@@ -2404,12 +2404,12 @@ class QtVideoPlayer(QObject):
...
@@ -2404,12 +2404,12 @@ class QtVideoPlayer(QObject):
if
field
in
message
.
data
:
if
field
in
message
.
data
:
loop_data
[
field
]
=
message
.
data
[
field
]
loop_data
[
field
]
=
message
.
data
[
field
]
logger
.
error
(
f
"LOOP DEBUG: VIDEO_PLAY message received from {message.sender}"
)
logger
.
debug
(
f
"LOOP DEBUG: VIDEO_PLAY message received from {message.sender}"
)
logger
.
error
(
f
"LOOP DEBUG: File path: {file_path}"
)
logger
.
debug
(
f
"LOOP DEBUG: File path: {file_path}"
)
logger
.
error
(
f
"LOOP DEBUG: Template name: {template_name}"
)
logger
.
debug
(
f
"LOOP DEBUG: Template name: {template_name}"
)
logger
.
error
(
f
"LOOP DEBUG: Overlay data: {template_data}"
)
logger
.
debug
(
f
"LOOP DEBUG: Overlay data: {template_data}"
)
logger
.
error
(
f
"LOOP DEBUG: Loop control data extracted: {loop_data}"
)
logger
.
debug
(
f
"LOOP DEBUG: Loop control data extracted: {loop_data}"
)
logger
.
error
(
f
"LOOP DEBUG: Raw message data: {message.data}"
)
logger
.
debug
(
f
"LOOP DEBUG: Raw message data: {message.data}"
)
if
not
file_path
:
if
not
file_path
:
logger
.
error
(
"No file path provided for video play"
)
logger
.
error
(
"No file path provided for video play"
)
...
@@ -2530,7 +2530,7 @@ class QtVideoPlayer(QObject):
...
@@ -2530,7 +2530,7 @@ class QtVideoPlayer(QObject):
video_widget
=
None
video_widget
=
None
if
hasattr
(
self
.
window
,
'video_widget'
)
and
hasattr
(
self
.
window
.
video_widget
,
'get_video_widget'
):
if
hasattr
(
self
.
window
,
'video_widget'
)
and
hasattr
(
self
.
window
.
video_widget
,
'get_video_widget'
):
video_widget
=
self
.
window
.
video_widget
.
get_video_widget
()
video_widget
=
self
.
window
.
video_widget
.
get_video_widget
()
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget state before template change - visible: {video_widget.isVisible() if video_widget else 'N/A'}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget state before template change - visible: {video_widget.isVisible() if video_widget else 'N/A'}"
)
# Load specific template if requested and using WebEngine overlay
# Load specific template if requested and using WebEngine overlay
if
load_specific_template
and
isinstance
(
overlay_view
,
OverlayWebView
):
if
load_specific_template
and
isinstance
(
overlay_view
,
OverlayWebView
):
...
@@ -2547,21 +2547,21 @@ class QtVideoPlayer(QObject):
...
@@ -2547,21 +2547,21 @@ class QtVideoPlayer(QObject):
# CRITICAL FIX: Force video widget refresh after template change
# CRITICAL FIX: Force video widget refresh after template change
if
video_widget
:
if
video_widget
:
logger
.
error
(
f
"GREEN SCREEN FIX: Forcing video widget refresh after template change"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Forcing video widget refresh after template change"
)
video_widget
.
repaint
()
video_widget
.
repaint
()
video_widget
.
update
()
video_widget
.
update
()
# Force media player to refresh video output
# Force media player to refresh video output
if
hasattr
(
self
.
window
,
'media_player'
):
if
hasattr
(
self
.
window
,
'media_player'
):
logger
.
error
(
f
"GREEN SCREEN FIX: Refreshing media player video output"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Refreshing media player video output"
)
current_output
=
self
.
window
.
media_player
.
videoOutput
()
current_output
=
self
.
window
.
media_player
.
videoOutput
()
if
current_output
:
if
current_output
:
# Force video output refresh by briefly setting to None and back
# Force video output refresh by briefly setting to None and back
self
.
window
.
media_player
.
setVideoOutput
(
None
)
self
.
window
.
media_player
.
setVideoOutput
(
None
)
self
.
window
.
media_player
.
setVideoOutput
(
current_output
)
self
.
window
.
media_player
.
setVideoOutput
(
current_output
)
logger
.
error
(
f
"GREEN SCREEN FIX: Media player video output refreshed"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Media player video output refreshed"
)
logger
.
error
(
f
"GREEN SCREEN FIX: Video widget state after template change - visible: {video_widget.isVisible()}"
)
logger
.
debug
(
f
"GREEN SCREEN FIX: Video widget state after template change - visible: {video_widget.isVisible()}"
)
# Update overlay data if provided (excluding template control flags)
# Update overlay data if provided (excluding template control flags)
if
template_data
:
if
template_data
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment