fixed: unable to turn on-screen widget on/off during streaming

This commit is contained in:
TrueZhuanjia committed 2025-12-13 20:39:43 +08:00
1 parent 4b001f9366
commit c0b1326dbd
2 files changed
+9 -1

No files matched your search

+1
View File
@@ -56,6 +56,7 @@
- (void) clearOnScreenWidgets; - (void) clearOnScreenWidgets;
- (void) reloadOnScreenWidgetViews; - (void) reloadOnScreenWidgetViews;
- (void) saveRelocatedWidgetViews; - (void) saveRelocatedWidgetViews;
- (bool) isOnScreenWidgetEnabled;
- (CGSize) getVideoAreaSize; - (CGSize) getVideoAreaSize;
- (CGPoint) adjustCoordinatesForVideoArea:(CGPoint)point; - (CGPoint) adjustCoordinatesForVideoArea:(CGPoint)point;
@@ -63,6 +63,7 @@
BOOL _userIsInteracting; BOOL _userIsInteracting;
bool viewJustLoaded; bool viewJustLoaded;
bool viewIsBeingResized; bool viewIsBeingResized;
bool previousOnScreenWidgetEnabled;
CGSize _keyboardSize; CGSize _keyboardSize;
PlotMetrics _decodeMetrics; PlotMetrics _decodeMetrics;
PlotMetrics _frameDropMetrics; PlotMetrics _frameDropMetrics;
@@ -384,7 +385,12 @@
// we got self.view passed to streamView class as the topLayerView, will be useful in many cases // we got self.view passed to streamView class as the topLayerView, will be useful in many cases
[self->_streamView reloadOnScreenControlsRealtimeWith:(ControllerSupport*)_controllerSupport [self->_streamView reloadOnScreenControlsRealtimeWith:(ControllerSupport*)_controllerSupport
andConfig:(StreamConfiguration*)_streamConfig]; //reload OSC here. andConfig:(StreamConfiguration*)_streamConfig]; //reload OSC here.
if(viewJustLoaded||reloadOnscreenWidgets) [self->_streamView reloadOnScreenWidgetViews]; //reload keyboard buttons here. the keyboard widget view will be added to the streamframe view instead streamview, the highest layer, which saves a lot of reengineering
bool onScreenWidgetSwitched = previousOnScreenWidgetEnabled != [_streamView isOnScreenWidgetEnabled];
bool needReload = onScreenWidgetSwitched && !previousOnScreenWidgetEnabled;
if(viewJustLoaded||reloadOnscreenWidgets||needReload) [_streamView reloadOnScreenWidgetViews]; //reload keyboard buttons here. the keyboard widget view will be added to the streamframe view instead streamview, the highest layer, which saves a lot of reengineering
if(onScreenWidgetSwitched && previousOnScreenWidgetEnabled) [_streamView clearOnScreenWidgets];
previousOnScreenWidgetEnabled = [_streamView isOnScreenWidgetEnabled];
[self reloadAirPlayConfig]; [self reloadAirPlayConfig];
[self mousePresenceChanged]; [self mousePresenceChanged];
@@ -471,6 +477,7 @@
[super viewDidAppear:animated]; [super viewDidAppear:animated];
viewJustLoaded = false; viewJustLoaded = false;
_deviceWindow = self.view.window; _deviceWindow = self.view.window;
previousOnScreenWidgetEnabled = [_streamView isOnScreenWidgetEnabled];
if (@available(iOS 13.0, *)) { if (@available(iOS 13.0, *)) {
UIScreen *currentScreen = self.view.window.windowScene.screen; UIScreen *currentScreen = self.view.window.windowScene.screen;
if (UIScreen.screens.count > 1 && [self isAirPlayEnabled] && currentScreen == UIScreen.mainScreen) { if (UIScreen.screens.count > 1 && [self isAirPlayEnabled] && currentScreen == UIScreen.mainScreen) {