single Host view refresh bug fix

This commit is contained in:
True Zhuanjia committed 2024-07-14 01:05:40 +08:00
1 parent 1b5f414c89
commit 01718282ff
4 files changed
+25 -23

No files matched your search

+1 -2
View File
@@ -14,8 +14,7 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface NativeTouchHandler : UIResponder @interface NativeTouchHandler : UIResponder
@property (nonatomic, assign) bool XBoundaryReached; @property (nonatomic, assign) bool BoundaryReached;
@property (nonatomic, assign) bool YBoundaryReached;
@property (nonatomic, assign) bool flipFlag; @property (nonatomic, assign) bool flipFlag;
- (id)initWithView:(StreamView*)view andSettings:(TemporarySettings*)settings; - (id)initWithView:(StreamView*)view andSettings:(TemporarySettings*)settings;
+5 -3
View File
@@ -87,10 +87,12 @@
CGFloat normalizedY = location.y / videoSize.height; CGFloat normalizedY = location.y / videoSize.height;
uint8_t pointerId = [self retrievePointerIdFromDict:touch]; uint8_t pointerId = [self retrievePointerIdFromDict:touch];
_XBoundaryReached = (normalizedX == 1.0f || normalizedX == 0.f); _BoundaryReached = (normalizedX == 1.0f || normalizedX == 0.f || normalizedY == 1.0f || normalizedY == 0.f);
_YBoundaryReached = (normalizedY == 1.0f || normalizedY == 0.f);
//if(_XBoundaryReached || _YBoundaryReached) LiSendTouchEvent(LI_TOUCH_EVENT_UP,pointerId, normalizedX, normalizedY, 0, 0, 0, 0); //if(_XBoundaryReached || _YBoundaryReached) LiSendTouchEvent(LI_TOUCH_EVENT_UP,pointerId, normalizedX, normalizedY, 0, 0, 0, 0);
if(_XBoundaryReached || _YBoundaryReached) LiSendTouchEvent(LI_TOUCH_EVENT_UP,pointerId, normalizedX, normalizedY, 0, 0, 0, 0); if(_BoundaryReached){
LiSendTouchEvent(LI_TOUCH_EVENT_UP, pointerId, normalizedX, normalizedY, 0, 0, 0, 0);
LiSendTouchEvent(LI_TOUCH_EVENT_MOVE, pointerId, 0.5, 0.5, 0, 0, 0, 0);
}
else LiSendTouchEvent(touchType, pointerId, normalizedX, normalizedY,(touch.force / touch.maximumPossibleForce) / sin(touch.altitudeAngle),0.0f, 0.0f,[streamView getRotationFromAzimuthAngle:[touch azimuthAngleInView:streamView]]); else LiSendTouchEvent(touchType, pointerId, normalizedX, normalizedY,(touch.force / touch.maximumPossibleForce) / sin(touch.altitudeAngle),0.0f, 0.0f,[streamView getRotationFromAzimuthAngle:[touch azimuthAngleInView:streamView]]);
} }
+1 -2
View File
@@ -53,13 +53,12 @@ StreamView *streamView;
previousPoint = latestPoint; previousPoint = latestPoint;
latestPoint = [touch locationInView:streamView]; latestPoint = [touch locationInView:streamView];
previousRelativePoint = latestRelativePoint; previousRelativePoint = latestRelativePoint;
if(nativeTouchHandler.XBoundaryReached || nativeTouchHandler.YBoundaryReached){ // reset if(nativeTouchHandler.BoundaryReached){ // reset
previousRelativePoint.x = halfScreenWidthInPoints; previousRelativePoint.x = halfScreenWidthInPoints;
previousRelativePoint.y = halfScreenHeightInPoints; previousRelativePoint.y = halfScreenHeightInPoints;
} }
latestRelativePoint.x = previousRelativePoint.x + pointerVelocityFactor * (latestPoint.x - previousPoint.x); latestRelativePoint.x = previousRelativePoint.x + pointerVelocityFactor * (latestPoint.x - previousPoint.x);
latestRelativePoint.y = previousRelativePoint.y + pointerVelocityFactor * (latestPoint.y - previousPoint.y); latestRelativePoint.y = previousRelativePoint.y + pointerVelocityFactor * (latestPoint.y - previousPoint.y);
} }
+ (void)initContextWithView:(StreamView *)view andNativeTouchHandler:(NativeTouchHandler*)handler { + (void)initContextWithView:(StreamView *)view andNativeTouchHandler:(NativeTouchHandler*)handler {
@@ -307,9 +307,9 @@ static NSMutableSet* hostList;
[self updateTitle]; [self updateTitle];
[self disableUpButton]; [self disableUpButton];
[self.collectionView removeFromSuperview]; // necessary for new scroll host view reloading mechanism
[self.view setBackgroundColor:[UIColor darkGrayColor]];
[self reloadScrollHostView]; // host view must be reloaded here [self reloadScrollHostView]; // host view must be reloaded here
[self.collectionView reloadData];
[self.view addSubview:hostScrollView];
} }
- (void) receivedAssetForApp:(TemporaryApp*)app { - (void) receivedAssetForApp:(TemporaryApp*)app {
@@ -344,6 +344,9 @@ static NSMutableSet* hostList;
Log(LOG_D, @"Clicked host: %@", host.name); Log(LOG_D, @"Clicked host: %@", host.name);
_selectedHost = host; _selectedHost = host;
[self updateTitle]; [self updateTitle];
[self.collectionView reloadData]; //for new scroll host view reloading mechanism
[self.view addSubview:self.collectionView]; //for new scroll host view reloading mechanism
[self attachWaterMark];
[self enableUpButton]; [self enableUpButton];
[self disableNavigation]; [self disableNavigation];
@@ -881,8 +884,8 @@ static NSMutableSet* hostList;
#if !TARGET_OS_TV #if !TARGET_OS_TV
// this method is deprecated // this method is deprecated
- (void)simulateSettingsButtonPressOpen { //force expand settings view to update resolution table, and all setting includes current fullscreen resolution will be updated. - (void)simulateSettingsButtonPressClose { //force expand settings view to update resolution table, and all setting includes current fullscreen resolution will be updated.
if (currentPosition == FrontViewPositionLeft && _settingsButton.target && [_settingsButton.target respondsToSelector:_settingsButton.action]) { if (currentPosition == FrontViewPositionRight && _settingsButton.target && [_settingsButton.target respondsToSelector:_settingsButton.action]) {
[_settingsButton.target performSelector:_settingsButton.action withObject:_settingsButton]; [_settingsButton.target performSelector:_settingsButton.action withObject:_settingsButton];
} }
} }
@@ -895,6 +898,7 @@ static NSMutableSet* hostList;
} }
- (void)handleOrientationChange { - (void)handleOrientationChange {
if([self isIphone]) [self simulateSettingsButtonPressClose];
double delayInSeconds = 0.7; double delayInSeconds = 0.7;
// Convert the delay into a dispatch_time_t value // Convert the delay into a dispatch_time_t value
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
@@ -996,6 +1000,7 @@ static NSMutableSet* hostList;
- (void)attachWaterMark { - (void)attachWaterMark {
// Create and configure the label // Create and configure the label
[self->waterMark removeFromSuperview];
self->waterMark = [[UILabel alloc] init]; self->waterMark = [[UILabel alloc] init];
self->waterMark.translatesAutoresizingMaskIntoConstraints = NO; self->waterMark.translatesAutoresizingMaskIntoConstraints = NO;
self->waterMark.text = [LocalizationHelper localizedStringForKey:@"Modified by: True砖家 on Bilibili"]; self->waterMark.text = [LocalizationHelper localizedStringForKey:@"Modified by: True砖家 on Bilibili"];
@@ -1019,6 +1024,10 @@ static NSMutableSet* hostList;
]]; ]];
} }
- (bool)isIphone{
return ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone);
}
- (bool)isIPhonePortrait{ - (bool)isIPhonePortrait{
bool isIPhone = ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone); bool isIPhone = ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone);
CGFloat screenHeightInPoints = CGRectGetHeight([[UIScreen mainScreen] bounds]); CGFloat screenHeightInPoints = CGRectGetHeight([[UIScreen mainScreen] bounds]);
@@ -1032,7 +1041,6 @@ static NSMutableSet* hostList;
{ {
[super viewDidLoad]; [super viewDidLoad];
//[OrientationHelper updateOrientationToLandscape]; //[OrientationHelper updateOrientationToLandscape];
[self attachWaterMark];
#if !TARGET_OS_TV #if !TARGET_OS_TV
self.settingsExpandedInStreamView = false; // init this flag self.settingsExpandedInStreamView = false; // init this flag
self.revealViewController.isStreaming = false; //init this flag for rvlVC self.revealViewController.isStreaming = false; //init this flag for rvlVC
@@ -1094,6 +1102,7 @@ static NSMutableSet* hostList;
//recordedScreenWidth = CGRectGetWidth([[UIScreen mainScreen] bounds]); //recordedScreenWidth = CGRectGetWidth([[UIScreen mainScreen] bounds]);
hostScrollView = [[ComputerScrollView alloc] init]; hostScrollView = [[ComputerScrollView alloc] init];
[self reloadScrollHostView]; [self reloadScrollHostView];
if ([hostList count] == 1) [self hostClicked:[hostList anyObject] view:nil]; //move auto click here from reloadScrollHostView, resolving select new host bug.
//if([SettingsViewController isLandscapeNow] != _streamConfig.width > _streamConfig.height) //if([SettingsViewController isLandscapeNow] != _streamConfig.width > _streamConfig.height)
//[self simulateSettingsButtonPress]; //force expand setting view if orientation changed since last quit from app. //[self simulateSettingsButtonPress]; //force expand setting view if orientation changed since last quit from app.
@@ -1138,19 +1147,11 @@ static NSMutableSet* hostList;
[self retrieveSavedHosts]; [self retrieveSavedHosts];
_discMan = [[DiscoveryManager alloc] initWithHosts:[hostList allObjects] andCallback:self]; _discMan = [[DiscoveryManager alloc] initWithHosts:[hostList allObjects] andCallback:self];
[self updateTitle];
if ([hostList count] == 1) { [self.view addSubview:hostScrollView];
[self hostClicked:[hostList anyObject] view:nil];
}
else {
[self updateTitle];
[self.view addSubview:hostScrollView];
}
} }
-(void)swapResolutionWidthHeightAccordingly{ -(void)swapResolutionWidthHeightAccordingly{
DataManager* dataMan = [[DataManager alloc] init]; DataManager* dataMan = [[DataManager alloc] init];
Settings *currentSettings = [dataMan retrieveSettings]; Settings *currentSettings = [dataMan retrieveSettings];
@@ -1255,7 +1256,8 @@ static NSMutableSet* hostList;
- (void)viewDidAppear:(BOOL)animated - (void)viewDidAppear:(BOOL)animated
{ {
[super viewDidAppear:animated]; [super viewDidAppear:NO];
//[self attachWaterMark];
#if !TARGET_OS_TV #if !TARGET_OS_TV
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self