From 75503fb812299dc0007670875dd99c1aa2669e22 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 29 Nov 2012 16:52:25 +0100 Subject: [PATCH 1/7] Fix chat height issue --- Classes/LinphoneUI/UIChatCell.xib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index b6b7f94a0..e323fa21c 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -2,7 +2,7 @@ 1536 - 11G56 + 11G63 2840 1138.51 569.00 @@ -35,7 +35,7 @@ - 274 + 290 From a7609ac1ea38dfafc67e76dc1c09ef187b1797c2 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 29 Nov 2012 17:46:23 +0100 Subject: [PATCH 2/7] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 501c5ce4d..f046faece 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 501c5ce4db223514bdb9090405b264e862c028ad +Subproject commit f046faecea4b392121e32a637f1eabbe16f10986 From 3a7b9fa270b9c638b205637b904e1c098f76f60f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 3 Dec 2012 13:14:17 +0100 Subject: [PATCH 3/7] Add edge low bandwidth detection when accept/invite --- Classes/LinphoneManager.h | 15 +++++++-- Classes/LinphoneManager.m | 69 ++++++++++++++++++++++++++++----------- Classes/PhoneMainView.m | 4 +-- 3 files changed, 65 insertions(+), 23 deletions(-) diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 5a9d5491d..f3c38d984 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -48,10 +48,19 @@ extern NSString *const kLinphoneSettingsUpdate; extern NSString *const kContactSipField; +typedef enum _NetworkType { + network_none = 0, + network_2g, + network_3g, + network_4g, + network_lte, + network_wifi +} NetworkType; + typedef enum _Connectivity { wifi, - wwan - ,none + wwan, + none } Connectivity; /* Application specific call context */ @@ -127,6 +136,7 @@ typedef struct _LinphoneManagerSounds { + (NSString*)bundleFile:(NSString*)file; + (NSString*)documentFile:(NSString*)file; +- (void)acceptCall:(LinphoneCall *)call; - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key; @@ -144,6 +154,7 @@ typedef struct _LinphoneManagerSounds { @property (readonly) FastAddressBook* fastAddressBook; @property Connectivity connectivity; +@property (readonly) NetworkType network; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; @property (readonly) sqlite3* database; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index a20cb47c0..2ce0f87f7 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -96,6 +96,7 @@ extern void libmsbcg729_init(); @implementation LinphoneManager @synthesize connectivity; +@synthesize network; @synthesize frontCamId; @synthesize backCamId; @synthesize database; @@ -142,7 +143,7 @@ struct codec_name_pref_table codec_pref_table[]={ + (NSSet *)unsupportedCodecs { NSMutableSet *set = [NSMutableSet set]; for(int i=0;codec_pref_table[i].name!=NULL;++i) { - if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name + if(linphone_core_find_payload_type(theLinphoneCore,codec_pref_table[i].name , codec_pref_table[i].rate,LINPHONE_FIND_PAYLOAD_IGNORE_CHANNELS) == NULL) { [set addObject:codec_pref_table[i].prefname]; } @@ -395,7 +396,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char /*should we reject this call ?*/ if ([lCTCallCenter currentCalls]!=nil) { [LinphoneLogger logc:LinphoneLoggerLog format:"Mobile call ongoing... rejecting call from [%s]",linphone_address_get_username(linphone_call_get_call_log(call)->from)]; - linphone_core_decline_call([LinphoneManager getLc], call,LinphoneReasonBusy); + linphone_core_decline_call(theLinphoneCore, call,LinphoneReasonBusy); [lCTCallCenter release]; return; } @@ -469,7 +470,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char // Disable speaker when no more call if ((state == LinphoneCallEnd || state == LinphoneCallError)) { - if(linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) { + if(linphone_core_get_calls_nb(theLinphoneCore) == 0) { [self setSpeakerEnabled:FALSE]; [self removeCTCallCenterCb]; } @@ -641,18 +642,18 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach LinphoneManager* lLinphoneMgr = [LinphoneManager instance]; SCNetworkReachabilityFlags networkDownFlags=kSCNetworkReachabilityFlagsConnectionRequired |kSCNetworkReachabilityFlagsConnectionOnTraffic | kSCNetworkReachabilityFlagsConnectionOnDemand; - if ([LinphoneManager getLc] != nil) { + if (theLinphoneCore != nil) { LinphoneProxyConfig* proxy; - linphone_core_get_default_proxy([LinphoneManager getLc], &proxy); + linphone_core_get_default_proxy(theLinphoneCore, &proxy); struct NetworkReachabilityContext* ctx = nilCtx ? ((struct NetworkReachabilityContext*)nilCtx) : 0; if ((flags == 0) || (flags & networkDownFlags)) { - linphone_core_set_network_reachable([LinphoneManager getLc],false); + linphone_core_set_network_reachable(theLinphoneCore, false); lLinphoneMgr.connectivity = none; [LinphoneManager kickOffNetworkConnection]; } else { Connectivity newConnectivity; - BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]), LINPHONERC_APPLICATION_KEY, "wifi_only_preference",FALSE); + BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config(theLinphoneCore), LINPHONERC_APPLICATION_KEY, "wifi_only_preference",FALSE); if (!ctx || ctx->testWWan) newConnectivity = flags & kSCNetworkReachabilityFlagsIsWWAN ? wwan:wifi; else @@ -672,11 +673,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach if (lLinphoneMgr.connectivity != newConnectivity) { // connectivity has changed - linphone_core_set_network_reachable([LinphoneManager getLc],false); + linphone_core_set_network_reachable(theLinphoneCore,false); if (newConnectivity == wwan && proxy && isWifiOnly) { linphone_proxy_config_expires(proxy, 0); } - linphone_core_set_network_reachable([LinphoneManager getLc],true); + linphone_core_set_network_reachable(theLinphoneCore,true); [LinphoneLogger logc:LinphoneLoggerLog format:"Network connectivity changed to type [%s]",(newConnectivity==wifi?"wifi":"wwan")]; [lLinphoneMgr waitForRegisterToArrive]; } @@ -720,6 +721,21 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } +- (NetworkType)network { + UIApplication *app = [UIApplication sharedApplication]; + NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; + NSNumber *dataNetworkItemView = nil; + + for (id subview in subviews) { + if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { + dataNetworkItemView = subview; + break; + } + } + NSNumber *number = (NSNumber*)[dataNetworkItemView valueForKey:@"dataNetworkType"]; + return [number intValue]; +} + #pragma mark - @@ -910,10 +926,10 @@ static int comp_call_id(const LinphoneCall* call , const char *callid) { - (void)acceptCallForCallId:(NSString*)callid { //first, make sure this callid is not already involved in a call if ([LinphoneManager isLcReady]) { - MSList* calls = (MSList*)linphone_core_get_calls([LinphoneManager getLc]); + MSList* calls = (MSList*)linphone_core_get_calls(theLinphoneCore); MSList* call = ms_list_find_custom(calls, (MSCompareFunc)comp_call_id, [callid UTF8String]); if (call != NULL) { - linphone_core_accept_call(theLinphoneCore, (LinphoneCall*)call->data); + [self acceptCall:(LinphoneCall*)call->data]; return; }; } @@ -922,7 +938,7 @@ static int comp_call_id(const LinphoneCall* call , const char *callid) { - (void)enableAutoAnswerForCallId:(NSString*) callid { //first, make sure this callid is not already involved in a call if ([LinphoneManager isLcReady]) { - MSList* calls = (MSList*)linphone_core_get_calls([LinphoneManager getLc]); + MSList* calls = (MSList*)linphone_core_get_calls(theLinphoneCore); if (ms_list_find_custom(calls, (MSCompareFunc)comp_call_id, [callid UTF8String])) { [LinphoneLogger log:LinphoneLoggerWarning format:@"Call id [%@] already handled",callid]; return; @@ -1121,6 +1137,16 @@ static void audioRouteChangeListenerCallback ( #pragma mark - Call Functions +- (void)acceptCall:(LinphoneCall *)call { + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters(theLinphoneCore); + bool low_bandwidth = self.network == network_2g; + if(low_bandwidth) { + [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + } + linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); + linphone_core_accept_call_with_params(theLinphoneCore,call, lcallParams); +} + - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer { if (!linphone_core_is_network_reachable(theLinphoneCore)) { UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) @@ -1150,8 +1176,13 @@ static void audioRouteChangeListenerCallback ( LinphoneProxyConfig* proxyCfg; //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); + linphone_core_get_default_proxy(theLinphoneCore,&proxyCfg); + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters(theLinphoneCore); + bool low_bandwidth = self.network == network_2g; + if(low_bandwidth) { + [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + } + linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); LinphoneCall* call=NULL; if ([address length] == 0) return; //just return @@ -1161,9 +1192,9 @@ static void audioRouteChangeListenerCallback ( linphone_address_set_display_name(linphoneAddress,[displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); } if(transfer) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [address cStringUsingEncoding:[NSString defaultCStringEncoding]]); + linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), [address cStringUsingEncoding:[NSString defaultCStringEncoding]]); } else { - call=linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); + call=linphone_core_invite_address_with_params(theLinphoneCore, linphoneAddress, lcallParams); } linphone_address_destroy(linphoneAddress); } else if (proxyCfg==nil){ @@ -1176,16 +1207,16 @@ static void audioRouteChangeListenerCallback ( [error release]; } else { char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); + LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity(theLinphoneCore)); linphone_proxy_config_normalize_number(proxyCfg,[address cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); if(displayName!=nil) { linphone_address_set_display_name(linphoneAddress, [displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); } if(transfer) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); + linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), normalizedUserName); } else { - call=linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); + call=linphone_core_invite_address_with_params(theLinphoneCore, linphoneAddress, lcallParams); } linphone_address_destroy(linphoneAddress); } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 941a752f2..e1e480293 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -565,7 +565,7 @@ static PhoneMainView* phoneMainViewInstance=nil; if (![[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] || [UIApplication sharedApplication].applicationState == UIApplicationStateActive) { if ([[LinphoneManager instance] shouldAutoAcceptCallForCallId:callId]){ - linphone_core_accept_call(linphone_call_get_core(call),call); + [[LinphoneManager instance] acceptCall:call]; }else{ IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController); if(controller != nil) { @@ -607,7 +607,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)incomingCallAccepted:(LinphoneCall*)call { - linphone_core_accept_call([LinphoneManager getLc], call); + [[LinphoneManager instance] acceptCall:call]; } - (void)incomingCallDeclined:(LinphoneCall*)call { From 63eced2dc1a32475ad5d2b1de4dcbc07e7a4c10f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 3 Dec 2012 15:11:47 +0100 Subject: [PATCH 4/7] Fix previous commit for edge mode --- Resources/linphonerc-factory | 4 ++-- Resources/linphonerc-factory~ipad | 2 +- submodules/linphone | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index 96d8e26bd..0025fff93 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -2,8 +2,8 @@ download_bw=380 upload_bw=380 mtu=1300 -activate_edge_workarounds=1 -edge_ping_time=200 +activate_edge_workarounds=0 +edge_ping_time=10 edge_bw=10 [sip] diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad index 3a800faab..fac1148f1 100644 --- a/Resources/linphonerc-factory~ipad +++ b/Resources/linphonerc-factory~ipad @@ -2,7 +2,7 @@ download_bw=512 upload_bw=512 mtu=1300 -activate_edge_workarounds=1 +activate_edge_workarounds=0 edge_ping_time=200 edge_bw=10 diff --git a/submodules/linphone b/submodules/linphone index f046faece..243016a97 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit f046faecea4b392121e32a637f1eabbe16f10986 +Subproject commit 243016a976f22ba31059aced9b5c748edb133e55 From 5784808dd9c383caeb6c320842af22c56b320a60 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 3 Dec 2012 15:31:39 +0100 Subject: [PATCH 5/7] Add edge optimization prefrence --- Classes/LinphoneCoreSettingsStore.m | 7 ++++- Classes/LinphoneManager.m | 20 ++++++++----- Resources/linphonerc | 1 + Resources/linphonerc~ipad | 1 + Settings/InAppSettings.bundle/Network.plist | 10 +++++++ .../en.lproj/Network.strings | 3 ++ .../fr.lproj/Network.strings | 3 ++ linphone.ldb/Contents.plist | 29 +++++++++++++++++-- .../Network/1/Network.strings | 3 ++ 9 files changed, 66 insertions(+), 11 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 6985dbd50..0155cd205 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -201,7 +201,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString:val forKey:@"media_encryption_preference"]; } [self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rotation_preference", "auto") forKey:@"rotation_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "edge_opt_preference", 1) forKey:@"edge_opt_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", 1) forKey:@"animations_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "wifi_only_preference", 0) forKey:@"wifi_only_preference"]; @@ -575,11 +576,15 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } else { isbackgroundModeEnabled = false; } + lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "backgroundmode_preference", isbackgroundModeEnabled); BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"]; lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", firstloginview); + BOOL edgeOpt = [self boolForKey:@"edge_opt_preference"]; + lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "edge_opt_preference", edgeOpt); + NSString *landscape = [self stringForKey:@"rotation_preference"]; lp_config_set_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rotation_preference", [landscape UTF8String]); diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 2ce0f87f7..c8270b4b6 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -1139,11 +1139,13 @@ static void audioRouteChangeListenerCallback ( - (void)acceptCall:(LinphoneCall *)call { LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters(theLinphoneCore); - bool low_bandwidth = self.network == network_2g; - if(low_bandwidth) { - [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + if([self lpConfigBoolForKey:@"edge_opt_preference"]) { + bool low_bandwidth = self.network == network_2g; + if(low_bandwidth) { + [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + } + linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); } - linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); linphone_core_accept_call_with_params(theLinphoneCore,call, lcallParams); } @@ -1178,11 +1180,13 @@ static void audioRouteChangeListenerCallback ( //get default proxy linphone_core_get_default_proxy(theLinphoneCore,&proxyCfg); LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters(theLinphoneCore); - bool low_bandwidth = self.network == network_2g; - if(low_bandwidth) { - [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + if([self lpConfigBoolForKey:@"edge_opt_preference"]) { + bool low_bandwidth = self.network == network_2g; + if(low_bandwidth) { + [LinphoneLogger log:LinphoneLoggerDebug format:@"Low bandwidth mode"]; + } + linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); } - linphone_call_params_enable_low_bandwidth(lcallParams, low_bandwidth); LinphoneCall* call=NULL; if ([address length] == 0) return; //just return diff --git a/Resources/linphonerc b/Resources/linphonerc index 0b454af82..fa651da1c 100644 --- a/Resources/linphonerc +++ b/Resources/linphonerc @@ -24,6 +24,7 @@ firewall_policy=0 [app] rotation_preference=auto animations_preference=1 +edge_opt_preference=1 [default_values] reg_expires=600 \ No newline at end of file diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad index adc25c51c..a009c43f7 100644 --- a/Resources/linphonerc~ipad +++ b/Resources/linphonerc~ipad @@ -24,6 +24,7 @@ firewall_policy=0 [app] rotation_preference=auto animations_preference=1 +edge_opt_preference=1 [default_values] reg_expires=600 \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist index 864b5acc3..cfac45da1 100644 --- a/Settings/InAppSettings.bundle/Network.plist +++ b/Settings/InAppSettings.bundle/Network.plist @@ -4,6 +4,16 @@ PreferenceSpecifiers + + DefaultValue + + Key + edge_opt_preference + Title + Edge optimization + Type + PSToggleSwitchSpecifier + DefaultValue diff --git a/Settings/InAppSettings.bundle/en.lproj/Network.strings b/Settings/InAppSettings.bundle/en.lproj/Network.strings index a2aa822d3..555c0b493 100644 --- a/Settings/InAppSettings.bundle/en.lproj/Network.strings +++ b/Settings/InAppSettings.bundle/en.lproj/Network.strings @@ -1,6 +1,9 @@ /* Wifi only */ "Wifi only" = "Wifi only"; +/* Edge optimization */ +"Edge optimization" = "Edge optimization"; + /* Stun Server */ "Stun Server" = "Stun Server"; diff --git a/Settings/InAppSettings.bundle/fr.lproj/Network.strings b/Settings/InAppSettings.bundle/fr.lproj/Network.strings index 105b01f75..51e9f6ef5 100644 --- a/Settings/InAppSettings.bundle/fr.lproj/Network.strings +++ b/Settings/InAppSettings.bundle/fr.lproj/Network.strings @@ -1,6 +1,9 @@ /* Wifi only */ "Wifi only" = "Uniquement Wifi"; +/* Edge optimization */ +"Edge optimization" = "Optimisation Edge"; + /* Stun Server */ "Stun Server" = "Serveur Stun"; diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist index eb0b3d625..2dc564216 100644 --- a/linphone.ldb/Contents.plist +++ b/linphone.ldb/Contents.plist @@ -17452,7 +17452,7 @@ Raison: %2$s change date - 2012-11-13T09:28:24Z + 2012-12-03T14:20:32Z changed values class @@ -17462,7 +17462,7 @@ Raison: %2$s flags 0 hash - 7220a3af4b5567ce1842c8a01759b1c9 + 61504fb6dc1719749e72de751676a9cf name Network.strings @@ -17493,6 +17493,31 @@ Raison: %2$s snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Edge optimization + errors + + flags + 0 + key + Edge optimization + localizations + + en + Edge optimization + fr + Optimisation Edge + + snapshots + + change date 2001-01-01T00:00:00Z diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings index a2aa822d3..555c0b493 100644 --- a/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings +++ b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings @@ -1,6 +1,9 @@ /* Wifi only */ "Wifi only" = "Wifi only"; +/* Edge optimization */ +"Edge optimization" = "Edge optimization"; + /* Stun Server */ "Stun Server" = "Stun Server"; From f63bd03569872a335e0452edb69a9eea93a87f1e Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 3 Dec 2012 15:34:37 +0100 Subject: [PATCH 6/7] Disable edge optimization --- Classes/LinphoneCoreSettingsStore.m | 2 +- Resources/linphonerc | 2 +- Resources/linphonerc~ipad | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 0155cd205..36fcc1dea 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -201,7 +201,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString:val forKey:@"media_encryption_preference"]; } [self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rotation_preference", "auto") forKey:@"rotation_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "edge_opt_preference", 1) forKey:@"edge_opt_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "edge_opt_preference", 0) forKey:@"edge_opt_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", 1) forKey:@"animations_preference"]; diff --git a/Resources/linphonerc b/Resources/linphonerc index fa651da1c..040abc310 100644 --- a/Resources/linphonerc +++ b/Resources/linphonerc @@ -24,7 +24,7 @@ firewall_policy=0 [app] rotation_preference=auto animations_preference=1 -edge_opt_preference=1 +edge_opt_preference=0 [default_values] reg_expires=600 \ No newline at end of file diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad index a009c43f7..9458f6e74 100644 --- a/Resources/linphonerc~ipad +++ b/Resources/linphonerc~ipad @@ -24,7 +24,7 @@ firewall_policy=0 [app] rotation_preference=auto animations_preference=1 -edge_opt_preference=1 +edge_opt_preference=0 [default_values] reg_expires=600 \ No newline at end of file From 650ff361aec4344187899b613d6ee9d1d723435a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 3 Dec 2012 15:55:10 +0100 Subject: [PATCH 7/7] Improve avatar loading --- Classes/ChatRoomViewController.m | 4 ++-- Classes/HistoryDetailsViewController.m | 2 +- Classes/IncomingCallViewController.m | 20 ++++++++++++-------- Classes/LinphoneUI/UICallCell.m | 6 ++++-- Classes/LinphoneUI/UIChatRoomCell.m | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 0915a4abe..a776b2622 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -348,7 +348,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta - (void)saveAndSend:(UIImage*)image url:(NSURL*)url { if(url == nil) { [waitView setHidden:FALSE]; - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[LinphoneManager instance].photoLibrary writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)[image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){ @@ -381,7 +381,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta [waitView setHidden:FALSE]; DTActionSheet *sheet = [[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Choose the image size", nil)]; - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //UIImage *image = [original_image normalizedImage]; for(NSString *key in [imageQualities allKeys]) { NSNumber *number = [imageQualities objectForKey:key]; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 58b480b51..553f8e38c 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -183,7 +183,7 @@ static UICompositeViewDescription *compositeDescription = nil; NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; if(contact) { - image = [FastAddressBook getContactImage:contact thumbnail:false]; + image = [FastAddressBook getContactImage:contact thumbnail:true]; address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index c3f3d6d72..e008d5c09 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -21,6 +21,7 @@ #import "LinphoneManager.h" #import "FastAddressBook.h" #import "PhoneMainView.h" +#import "UILinphone.h" @implementation IncomingCallViewController @@ -113,7 +114,8 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)update { [self view]; //Force view load - UIImage *image = nil; + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown.png"]]; + NSString* address = nil; const LinphoneAddress* addr = linphone_call_get_remote_address(call); if (addr != NULL) { @@ -124,7 +126,15 @@ static UICompositeViewDescription *compositeDescription = nil; NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; if(contact) { - image = [FastAddressBook getContactImage:contact thumbnail:false]; + UIImage *tmpImage = [FastAddressBook getContactImage:contact thumbnail:false]; + if(tmpImage != nil) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { + UIImage *tmpImage2 = [UIImage decodedImageWithImage:tmpImage]; + dispatch_async(dispatch_get_main_queue(), ^{ + avatarImage.image = tmpImage2; + }); + }); + } address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } @@ -140,12 +150,6 @@ static UICompositeViewDescription *compositeDescription = nil; } } - // Set Image - if(image == nil) { - image = [UIImage imageNamed:@"avatar_unknown.png"]; - } - [avatarImage setImage:image]; - // Set Address if(address == nil) { address = @"Unknown"; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 69e4e9ee6..8d69976d7 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -61,9 +61,11 @@ self.address = [FastAddressBook getContactDisplayName:contact]; UIImage *tmpImage = [FastAddressBook getContactImage:contact thumbnail:false]; if(tmpImage != nil) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, (unsigned long)NULL), ^(void) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { UIImage *tmpImage2 = [UIImage decodedImageWithImage:tmpImage]; - self.image = tmpImage2; + dispatch_async(dispatch_get_main_queue(), ^{ + [self setImage: tmpImage2]; + }); }); } } diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index d23d732ed..067cd5c78 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -127,7 +127,7 @@ static UIFont *CELL_FONT = nil; [messageImageView startLoading]; ChatModel *achat = chat; [[LinphoneManager instance].photoLibrary assetForURL:[NSURL URLWithString:[chat message]] resultBlock:^(ALAsset *asset) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, (unsigned long)NULL), ^(void) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { ALAssetRepresentation* representation = [asset defaultRepresentation]; UIImage *image = [UIImage imageWithCGImage:[representation fullResolutionImage] scale:representation.scale