From 23564a3028d39306f57d37bc05e673e6345eb18e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 5 Oct 2016 17:32:30 -0700 Subject: [PATCH] Add support for GFE 3.0.7 --- Limelight/Stream/Connection.h | 2 +- Limelight/Stream/Connection.m | 18 +++++++++++------- Limelight/Stream/StreamConfiguration.h | 2 ++ Limelight/Stream/StreamManager.m | 8 +++++--- moonlight-common/moonlight-common-c | 2 +- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Limelight/Stream/Connection.h b/Limelight/Stream/Connection.h index 9754d5f..62b1774 100644 --- a/Limelight/Stream/Connection.h +++ b/Limelight/Stream/Connection.h @@ -25,7 +25,7 @@ @interface Connection : NSOperation --(id) initWithConfig:(StreamConfiguration*)config renderer:(VideoDecoderRenderer*)myRenderer connectionCallbacks:(id)callbacks serverMajorVersion:(int)serverMajorVersion; +-(id) initWithConfig:(StreamConfiguration*)config renderer:(VideoDecoderRenderer*)myRenderer connectionCallbacks:(id)callbacks; -(void) terminate; -(void) main; diff --git a/Limelight/Stream/Connection.m b/Limelight/Stream/Connection.m index 598d088..4460486 100644 --- a/Limelight/Stream/Connection.m +++ b/Limelight/Stream/Connection.m @@ -15,12 +15,11 @@ #include "opus.h" @implementation Connection { - const char* _host; + SERVER_INFORMATION _serverInfo; STREAM_CONFIGURATION _streamConfig; CONNECTION_LISTENER_CALLBACKS _clCallbacks; DECODER_RENDERER_CALLBACKS _drCallbacks; AUDIO_RENDERER_CALLBACKS _arCallbacks; - int _serverMajorVersion; } static NSLock* initLock; @@ -274,7 +273,7 @@ void ClDisplayTransientMessage(const char* message) }); } --(id) initWithConfig:(StreamConfiguration*)config renderer:(VideoDecoderRenderer*)myRenderer connectionCallbacks:(id)callbacks serverMajorVersion:(int)serverMajorVersion +-(id) initWithConfig:(StreamConfiguration*)config renderer:(VideoDecoderRenderer*)myRenderer connectionCallbacks:(id)callbacks { self = [super init]; @@ -284,10 +283,15 @@ void ClDisplayTransientMessage(const char* message) initLock = [[NSLock alloc] init]; } - _host = [config.host cStringUsingEncoding:NSUTF8StringEncoding]; + LiInitializeServerInformation(&_serverInfo); + _serverInfo.address = [config.host cStringUsingEncoding:NSUTF8StringEncoding]; + _serverInfo.serverInfoAppVersion = [config.appVersion cStringUsingEncoding:NSUTF8StringEncoding]; + if (config.gfeVersion != nil) { + _serverInfo.serverInfoGfeVersion = [config.gfeVersion cStringUsingEncoding:NSUTF8StringEncoding]; + } + renderer = myRenderer; _callbacks = callbacks; - _serverMajorVersion = serverMajorVersion; LiInitializeStreamConfiguration(&_streamConfig); _streamConfig.width = config.width; @@ -407,12 +411,12 @@ static OSStatus playbackCallback(void *inRefCon, -(void) main { [initLock lock]; - LiStartConnection(_host, + LiStartConnection(&_serverInfo, &_streamConfig, &_clCallbacks, &_drCallbacks, &_arCallbacks, - NULL, 0, _serverMajorVersion); + NULL, 0); [initLock unlock]; } diff --git a/Limelight/Stream/StreamConfiguration.h b/Limelight/Stream/StreamConfiguration.h index 91d2326..7ce1ba4 100644 --- a/Limelight/Stream/StreamConfiguration.h +++ b/Limelight/Stream/StreamConfiguration.h @@ -11,6 +11,8 @@ @interface StreamConfiguration : NSObject @property NSString* host; +@property NSString* appVersion; +@property NSString* gfeVersion; @property NSString* appID; @property int width; @property int height; diff --git a/Limelight/Stream/StreamManager.m b/Limelight/Stream/StreamManager.m index 841015c..f3d7d15 100644 --- a/Limelight/Stream/StreamManager.m +++ b/Limelight/Stream/StreamManager.m @@ -50,6 +50,7 @@ fallbackError:401 fallbackRequest:[hMan newHttpServerInfoRequest]]]; NSString* pairStatus = [serverInfoResp getStringTag:@"PairStatus"]; NSString* appversion = [serverInfoResp getStringTag:@"appversion"]; + NSString* gfeVersion = [serverInfoResp getStringTag:@"GfeVersion"]; NSString* serverState = [serverInfoResp getStringTag:@"state"]; if (![serverInfoResp isStatusOk] || pairStatus == NULL || appversion == NULL || serverState == NULL) { [_callbacks launchFailed:@"Failed to connect to PC"]; @@ -82,11 +83,12 @@ [((StreamView*)_renderView) setMouseDeltaFactors:_config.width / screenSize.width y:_config.height / screenSize.height]; - int majorVersion = [[appversion substringToIndex:1] intValue]; - Log(LOG_I, @"Server is generation %d", majorVersion); + // Populate the config's version fields from serverinfo + _config.appVersion = appversion; + _config.gfeVersion = gfeVersion; VideoDecoderRenderer* renderer = [[VideoDecoderRenderer alloc]initWithView:_renderView]; - _connection = [[Connection alloc] initWithConfig:_config renderer:renderer connectionCallbacks:_callbacks serverMajorVersion:majorVersion]; + _connection = [[Connection alloc] initWithConfig:_config renderer:renderer connectionCallbacks:_callbacks]; NSOperationQueue* opQueue = [[NSOperationQueue alloc] init]; [opQueue addOperation:_connection]; } diff --git a/moonlight-common/moonlight-common-c b/moonlight-common/moonlight-common-c index 293c6a7..bd82577 160000 --- a/moonlight-common/moonlight-common-c +++ b/moonlight-common/moonlight-common-c @@ -1 +1 @@ -Subproject commit 293c6a7274f877322afd7dae4eac96533ff2ab5d +Subproject commit bd825776b3d40ea834bac2352e4359bb3145b367