diff options
-rw-r--r-- | media/splash.jpg | bin | 1439546 -> 1439165 bytes | |||
-rw-r--r-- | tools/android/packaging/xbmc/AndroidManifest.xml.in | 2 | ||||
-rw-r--r-- | tools/android/packaging/xbmc/build.gradle.in | 6 | ||||
-rw-r--r-- | version.txt | 6 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/schema/types.json | 6 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/schema/version.txt | 2 | ||||
-rw-r--r-- | xbmc/platform/darwin/tvos/XBMCController.h | 7 | ||||
-rw-r--r-- | xbmc/platform/darwin/tvos/XBMCController.mm | 67 |
8 files changed, 38 insertions, 58 deletions
diff --git a/media/splash.jpg b/media/splash.jpg Binary files differindex 10b1111e17..fd3c3afd71 100644 --- a/media/splash.jpg +++ b/media/splash.jpg diff --git a/tools/android/packaging/xbmc/AndroidManifest.xml.in b/tools/android/packaging/xbmc/AndroidManifest.xml.in index e0dc8a4047..882e0ae332 100644 --- a/tools/android/packaging/xbmc/AndroidManifest.xml.in +++ b/tools/android/packaging/xbmc/AndroidManifest.xml.in @@ -7,7 +7,7 @@ <uses-sdk android:minSdkVersion="21" - android:targetSdkVersion="26" /> + android:targetSdkVersion="29" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> diff --git a/tools/android/packaging/xbmc/build.gradle.in b/tools/android/packaging/xbmc/build.gradle.in index 6b64c424b0..3554caf159 100644 --- a/tools/android/packaging/xbmc/build.gradle.in +++ b/tools/android/packaging/xbmc/build.gradle.in @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 - buildToolsVersion "28.0.3" + compileSdkVersion 29 + buildToolsVersion "29.0.3" defaultConfig { applicationId "@APP_PACKAGE@" minSdkVersion 21 - targetSdkVersion 28 + targetSdkVersion 29 versionCode @APP_VERSION_CODE_ANDROID@ versionName "@APP_VERSION@" } diff --git a/version.txt b/version.txt index bb4fe47ecf..bc76b7c8cf 100644 --- a/version.txt +++ b/version.txt @@ -4,9 +4,9 @@ COPYRIGHT_YEARS 2005-2020 WEBSITE http://kodi.tv VERSION_MAJOR 19 VERSION_MINOR 0 -VERSION_TAG ALPHA3 -VERSION_CODE 18.9.730 -ADDON_API 18.9.730 +VERSION_TAG BETA1 +VERSION_CODE 18.9.801 +ADDON_API 18.9.801 ADDON_REPOS repository.xbmc.org|https://mirrors.kodi.tv APP_PACKAGE org.xbmc.kodi PACKAGE_IDENTITY XBMCFoundation.Kodi diff --git a/xbmc/interfaces/json-rpc/schema/types.json b/xbmc/interfaces/json-rpc/schema/types.json index c4d40317e1..29dc585108 100644 --- a/xbmc/interfaces/json-rpc/schema/types.json +++ b/xbmc/interfaces/json-rpc/schema/types.json @@ -25,8 +25,9 @@ }, "Global.Time": { "type": "object", + "description": "A duration.", "properties": { - "hours": { "type": "integer", "required": true, "minimum": 0, "maximum": 23 }, + "hours": { "type": "integer", "required": true, "minimum": 0 }, "minutes": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 }, "seconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 }, "milliseconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 999 } @@ -180,9 +181,10 @@ }, "Player.Position.Time": { "type": "object", + "description": "A position in duration.", "additionalProperties": false, "properties": { - "hours": { "type": "integer", "minimum": 0, "maximum": 23, "default": 0 }, + "hours": { "type": "integer", "minimum": 0, "default": 0 }, "minutes": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 }, "seconds": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 }, "milliseconds": { "type": "integer", "minimum": 0, "maximum": 999, "default": 0 } diff --git a/xbmc/interfaces/json-rpc/schema/version.txt b/xbmc/interfaces/json-rpc/schema/version.txt index ad71274949..74c82f7af3 100644 --- a/xbmc/interfaces/json-rpc/schema/version.txt +++ b/xbmc/interfaces/json-rpc/schema/version.txt @@ -1 +1 @@ -JSONRPC_VERSION 11.19.2 +JSONRPC_VERSION 11.20.0 diff --git a/xbmc/platform/darwin/tvos/XBMCController.h b/xbmc/platform/darwin/tvos/XBMCController.h index 85f2db72cc..ec26fb3d72 100644 --- a/xbmc/platform/darwin/tvos/XBMCController.h +++ b/xbmc/platform/darwin/tvos/XBMCController.h @@ -24,8 +24,7 @@ class CFileItem; @interface XBMCController : UIViewController { BOOL m_isPlayingBeforeInactive; - UIBackgroundTaskIdentifier m_bgTask; - BOOL m_bgTaskActive; + UIBackgroundTaskIdentifier m_enterBackgroundTaskId; bool m_nativeKeyboardActive; BOOL m_pause; BOOL m_animating; @@ -54,8 +53,8 @@ class CFileItem; - (void)deactivateKeyboard:(UIView*)view; - (void)nativeKeyboardActive:(bool)active; -- (UIBackgroundTaskIdentifier)enableBackGroundTask; -- (void)disableBackGroundTask:(UIBackgroundTaskIdentifier)bgTaskID; +- (void)beginEnterBackgroundTask; +- (void)endEnterBackgroundTask; - (void)disableScreenSaver; - (void)enableScreenSaver; diff --git a/xbmc/platform/darwin/tvos/XBMCController.mm b/xbmc/platform/darwin/tvos/XBMCController.mm index 998f9f5ff7..5eb73951b7 100644 --- a/xbmc/platform/darwin/tvos/XBMCController.mm +++ b/xbmc/platform/darwin/tvos/XBMCController.mm @@ -174,20 +174,22 @@ XBMCController* g_xbmcController; #pragma mark - BackgroundTask -- (UIBackgroundTaskIdentifier)enableBackGroundTask; +- (void)beginEnterBackgroundTask; { - CLog::Log(LOGDEBUG, "%s: enableBackgroundTask created", __PRETTY_FUNCTION__); + CLog::Log(LOGDEBUG, "%s", __PRETTY_FUNCTION__); // we have to alloc the background task for keep network working after screen lock and dark. - return [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; + if (m_enterBackgroundTaskId == UIBackgroundTaskInvalid) + m_enterBackgroundTaskId = + [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; } -- (void)disableBackGroundTask:(UIBackgroundTaskIdentifier)bgTaskID; +- (void)endEnterBackgroundTask; { - if (bgTaskID != UIBackgroundTaskInvalid) + CLog::Log(LOGDEBUG, "%s", __PRETTY_FUNCTION__); + if (m_enterBackgroundTaskId != UIBackgroundTaskInvalid) { - CLog::Log(LOGDEBUG, "%s: endBackgroundTask closed", __PRETTY_FUNCTION__); - [[UIApplication sharedApplication] endBackgroundTask:bgTaskID]; - bgTaskID = UIBackgroundTaskInvalid; + [[UIApplication sharedApplication] endBackgroundTask:m_enterBackgroundTaskId]; + m_enterBackgroundTaskId = UIBackgroundTaskInvalid; } } @@ -196,22 +198,19 @@ XBMCController* g_xbmcController; - (void)enterBackground { CLog::Log(LOGDEBUG, "%s", __PRETTY_FUNCTION__); - - m_bgTask = [self enableBackGroundTask]; - m_bgTaskActive = YES; + [self beginEnterBackgroundTask]; // We need this hack, without it we stay stuck forever in // CPowerManager::OnSleep() // CApplication::StopPlaying() // CGUIWindowManager::ProcessRenderLoop + //TODO: Understand why we need this hack and fix the bug to remove this hack if (CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow() == WINDOW_SLIDESHOW || CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow() == WINDOW_FULLSCREEN_VIDEO || CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow() == WINDOW_FULLSCREEN_GAME || CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow() == WINDOW_VISUALISATION) CServiceBroker::GetGUI()->GetWindowManager().PreviousWindow(); - CServiceBroker::GetNetwork().GetServices().Stop(true); - dynamic_cast<CTVOSPowerSyscall*>(CServiceBroker::GetPowerManager().GetPowerSyscall()) ->SetOnPause(); CServiceBroker::GetPowerManager().ProcessEvents(); @@ -219,41 +218,23 @@ XBMCController* g_xbmcController; CWinSystemTVOS* winSystem = dynamic_cast<CWinSystemTVOS*>(CServiceBroker::GetWinSystem()); winSystem->OnAppFocusChange(false); - m_bgTaskActive = NO; - [self disableBackGroundTask:m_bgTask]; + CServiceBroker::GetNetwork().GetServices().Stop(true); + + [self endEnterBackgroundTask]; } - (void)enterForeground { CLog::Log(LOGDEBUG, "%s", __PRETTY_FUNCTION__); - // stop background task (if running) - if (m_bgTaskActive) + + // If enterBackground task is still running, wait + while (m_enterBackgroundTaskId != UIBackgroundTaskInvalid) { - CLog::Log(LOGDEBUG, "%s: bgTask already running, closing", __PRETTY_FUNCTION__); - [self disableBackGroundTask:m_bgTask]; + CLog::Log(LOGDEBUG, "%s: enterBackground task still running, wait", __PRETTY_FUNCTION__); + usleep(50 * 1000); } - [NSThread detachNewThreadSelector:@selector(enterForegroundDelayed:) - toTarget:self - withObject:nil]; -} - -- (void)enterForegroundDelayed:(id)arg -{ - - __block BOOL appstate = YES; - dispatch_async(dispatch_get_main_queue(), ^{ - if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) - appstate = NO; - }); - - if (!appstate) - return; - - // g_application.IsInitialized is only true if - // we were running and got moved to background - while (!g_application.IsInitialized()) - usleep(50 * 1000); + CServiceBroker::GetNetwork().GetServices().Start(); CWinSystemTVOS* winSystem = dynamic_cast<CWinSystemTVOS*>(CServiceBroker::GetWinSystem()); winSystem->OnAppFocusChange(true); @@ -261,7 +242,6 @@ XBMCController* g_xbmcController; dynamic_cast<CTVOSPowerSyscall*>(CServiceBroker::GetPowerManager().GetPowerSyscall()) ->SetOnResume(); CServiceBroker::GetPowerManager().ProcessEvents(); - CServiceBroker::GetNetwork().GetServices().Start(); // this handles what to do if we got pushed // into foreground by a topshelf item select/play @@ -492,7 +472,7 @@ int KODI_Run(bool renderGUI) { [displayManager removeModeSwitchObserver]; // stop background task (if running) - [self disableBackGroundTask:m_bgTask]; + [self endEnterBackgroundTask]; [self stopAnimation]; } @@ -508,8 +488,7 @@ int KODI_Run(bool renderGUI) m_animating = NO; m_isPlayingBeforeInactive = NO; - m_bgTaskActive = NO; - m_bgTask = UIBackgroundTaskInvalid; + m_enterBackgroundTaskId = UIBackgroundTaskInvalid; [self enableScreenSaver]; |