aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/splash.jpgbin1439546 -> 1439165 bytes
-rw-r--r--tools/android/packaging/xbmc/AndroidManifest.xml.in2
-rw-r--r--tools/android/packaging/xbmc/build.gradle.in6
-rw-r--r--version.txt6
-rw-r--r--xbmc/interfaces/json-rpc/schema/types.json6
-rw-r--r--xbmc/interfaces/json-rpc/schema/version.txt2
-rw-r--r--xbmc/platform/darwin/tvos/XBMCController.h7
-rw-r--r--xbmc/platform/darwin/tvos/XBMCController.mm67
8 files changed, 38 insertions, 58 deletions
diff --git a/media/splash.jpg b/media/splash.jpg
index 10b1111e17..fd3c3afd71 100644
--- a/media/splash.jpg
+++ b/media/splash.jpg
Binary files differ
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];