summaryrefslogtreecommitdiffstats
path: root/xbmc
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2019-04-29 12:23:35 +0200
committermanuel <manuel@mausz.at>2019-04-29 12:23:35 +0200
commitcf85cccfdb1aa57b6246641f606563288e0870e5 (patch)
tree06b9d173bf466d555d99803d1bce388e666444e5 /xbmc
parent483c0b88bfc1b798396c31a4dd2f5239399ce59e (diff)
downloadkodi-pvr-build-cf85cccfdb1aa57b6246641f606563288e0870e5.tar.gz
kodi-pvr-build-cf85cccfdb1aa57b6246641f606563288e0870e5.tar.bz2
kodi-pvr-build-cf85cccfdb1aa57b6246641f606563288e0870e5.zip
sync with upstreamLeia
Diffstat (limited to 'xbmc')
-rw-r--r--xbmc/addons/AddonBindings.cmake2
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h55
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h2
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h28
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h21
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h18
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h6
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h5
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h4
-rw-r--r--xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h2
-rw-r--r--xbmc/filesystem/IFileTypes.h2
-rw-r--r--xbmc/input/actions/ActionIDs.h311
-rw-r--r--xbmc/interfaces/json-rpc/schema/version.txt2
13 files changed, 421 insertions, 37 deletions
diff --git a/xbmc/addons/AddonBindings.cmake b/xbmc/addons/AddonBindings.cmake
index 213b3e2..53a9801 100644
--- a/xbmc/addons/AddonBindings.cmake
+++ b/xbmc/addons/AddonBindings.cmake
@@ -6,7 +6,7 @@
6set(CORE_ADDON_BINDINGS_FILES 6set(CORE_ADDON_BINDINGS_FILES
7 ${CORE_SOURCE_DIR}/xbmc/cores/AudioEngine/Utils/AEChannelData.h 7 ${CORE_SOURCE_DIR}/xbmc/cores/AudioEngine/Utils/AEChannelData.h
8 ${CORE_SOURCE_DIR}/xbmc/filesystem/IFileTypes.h 8 ${CORE_SOURCE_DIR}/xbmc/filesystem/IFileTypes.h
9 ${CORE_SOURCE_DIR}/xbmc/input/ActionIDs.h 9 ${CORE_SOURCE_DIR}/xbmc/input/actions/ActionIDs.h
10 ${CORE_SOURCE_DIR}/xbmc/input/XBMC_vkeys.h 10 ${CORE_SOURCE_DIR}/xbmc/input/XBMC_vkeys.h
11) 11)
12 12
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
index 42ce2e7..db39f86 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
@@ -43,6 +43,20 @@
43 #define ATTRIBUTE_HIDDEN 43 #define ATTRIBUTE_HIDDEN
44#endif 44#endif
45 45
46#ifdef _MSC_VER
47 #define ATTRIBUTE_FORCEINLINE __forceinline
48#elif defined(__GNUC__)
49 #define ATTRIBUTE_FORCEINLINE inline __attribute__((__always_inline__))
50#elif defined(__CLANG__)
51 #if __has_attribute(__always_inline__)
52 #define ATTRIBUTE_FORCEINLINE inline __attribute__((__always_inline__))
53 #else
54 #define ATTRIBUTE_FORCEINLINE inline
55 #endif
56#else
57 #define ATTRIBUTE_FORCEINLINE inline
58#endif
59
46#include "versions.h" 60#include "versions.h"
47 61
48namespace kodi { namespace addon { class CAddonBase; }} 62namespace kodi { namespace addon { class CAddonBase; }}
@@ -179,6 +193,7 @@ typedef struct KodiToAddonFuncTable_Addon
179 ADDON_STATUS (*create_instance)(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent); 193 ADDON_STATUS (*create_instance)(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent);
180 void (*destroy_instance)(int instanceType, KODI_HANDLE instance); 194 void (*destroy_instance)(int instanceType, KODI_HANDLE instance);
181 ADDON_STATUS (*set_setting)(const char *settingName, const void *settingValue); 195 ADDON_STATUS (*set_setting)(const char *settingName, const void *settingValue);
196 ADDON_STATUS(*create_instance_ex)(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent, const char* version);
182} KodiToAddonFuncTable_Addon; 197} KodiToAddonFuncTable_Addon;
183 198
184/* 199/*
@@ -237,6 +252,11 @@ public:
237 return ADDON_STATUS_NOT_IMPLEMENTED; 252 return ADDON_STATUS_NOT_IMPLEMENTED;
238 } 253 }
239 254
255 virtual ADDON_STATUS CreateInstanceEx(int instanceType, std::string instanceID, KODI_HANDLE instance, KODI_HANDLE& addonInstance, const std::string &version)
256 {
257 return CreateInstance(instanceType, instanceID, instance, addonInstance);
258 }
259
240 const ADDON_TYPE m_type; 260 const ADDON_TYPE m_type;
241}; 261};
242} /* namespace addon */ 262} /* namespace addon */
@@ -278,6 +298,9 @@ public:
278 CAddonBase::m_interface->toAddon->create_instance = ADDONBASE_CreateInstance; 298 CAddonBase::m_interface->toAddon->create_instance = ADDONBASE_CreateInstance;
279 CAddonBase::m_interface->toAddon->destroy_instance = ADDONBASE_DestroyInstance; 299 CAddonBase::m_interface->toAddon->destroy_instance = ADDONBASE_DestroyInstance;
280 CAddonBase::m_interface->toAddon->set_setting = ADDONBASE_SetSetting; 300 CAddonBase::m_interface->toAddon->set_setting = ADDONBASE_SetSetting;
301 // If version is present, we know that kodi has create_instance_ex implemented
302 if (!CAddonBase::m_strGlobalApiVersion.empty())
303 CAddonBase::m_interface->toAddon->create_instance_ex = ADDONBASE_CreateInstanceEx;
281 } 304 }
282 305
283 virtual ~CAddonBase() = default; 306 virtual ~CAddonBase() = default;
@@ -306,8 +329,14 @@ public:
306 return ADDON_STATUS_UNKNOWN; 329 return ADDON_STATUS_UNKNOWN;
307 } 330 }
308 331
332 virtual ADDON_STATUS CreateInstanceEx(int instanceType, std::string instanceID, KODI_HANDLE instance, KODI_HANDLE& addonInstance, const std::string &version)
333 {
334 return CreateInstance(instanceType, instanceID, instance, addonInstance);
335 }
336
309 /* Global variables of class */ 337 /* Global variables of class */
310 static AddonGlobalInterface* m_interface; // Interface function table to hold addresses on add-on and from kodi 338 static AddonGlobalInterface* m_interface; // Interface function table to hold addresses on add-on and from kodi
339 static std::string m_strGlobalApiVersion;
311 340
312/*private:*/ /* Needed public as long the old call functions becomes used! */ 341/*private:*/ /* Needed public as long the old call functions becomes used! */
313 static inline void ADDONBASE_Destroy() 342 static inline void ADDONBASE_Destroy()
@@ -325,16 +354,21 @@ public:
325 354
326 static inline ADDON_STATUS ADDONBASE_CreateInstance(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent) 355 static inline ADDON_STATUS ADDONBASE_CreateInstance(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent)
327 { 356 {
357 return ADDONBASE_CreateInstanceEx(instanceType, instanceID, instance, addonInstance, parent, "");
358 }
359
360 static inline ADDON_STATUS ADDONBASE_CreateInstanceEx(int instanceType, const char* instanceID, KODI_HANDLE instance, KODI_HANDLE* addonInstance, KODI_HANDLE parent, const char* version)
361 {
328 ADDON_STATUS status = ADDON_STATUS_NOT_IMPLEMENTED; 362 ADDON_STATUS status = ADDON_STATUS_NOT_IMPLEMENTED;
329 if (parent != nullptr) 363 if (parent != nullptr)
330 status = static_cast<IAddonInstance*>(parent)->CreateInstance(instanceType, instanceID, instance, *addonInstance); 364 status = static_cast<IAddonInstance*>(parent)->CreateInstanceEx(instanceType, instanceID, instance, *addonInstance, version);
331 if (status == ADDON_STATUS_NOT_IMPLEMENTED) 365 if (status == ADDON_STATUS_NOT_IMPLEMENTED)
332 status = CAddonBase::m_interface->addonBase->CreateInstance(instanceType, instanceID, instance, *addonInstance); 366 status = CAddonBase::m_interface->addonBase->CreateInstanceEx(instanceType, instanceID, instance, *addonInstance, version);
333 if (*addonInstance == nullptr) 367 if (*addonInstance == nullptr)
334 throw std::logic_error("kodi::addon::CAddonBase CreateInstance returns a empty instance pointer!"); 368 throw std::logic_error("kodi::addon::CAddonBase CreateInstanceEx returns a empty instance pointer!");
335 369
336 if (static_cast<::kodi::addon::IAddonInstance*>(*addonInstance)->m_type != instanceType) 370 if (static_cast<::kodi::addon::IAddonInstance*>(*addonInstance)->m_type != instanceType)
337 throw std::logic_error("kodi::addon::CAddonBase CreateInstance with difference on given and returned instance type!"); 371 throw std::logic_error("kodi::addon::CAddonBase CreateInstanceEx with difference on given and returned instance type!");
338 372
339 return status; 373 return status;
340 } 374 }
@@ -636,6 +670,11 @@ inline void* GetInterface(const std::string &name, const std::string &version)
636 kodi::addon::CAddonBase::m_interface->addonBase = new AddonClass; \ 670 kodi::addon::CAddonBase::m_interface->addonBase = new AddonClass; \
637 return kodi::addon::CAddonBase::m_interface->addonBase->Create(); \ 671 return kodi::addon::CAddonBase::m_interface->addonBase->Create(); \
638 } \ 672 } \
673 extern "C" __declspec(dllexport) ADDON_STATUS ADDON_CreateEx(KODI_HANDLE addonInterface, const char* globalApiVersion, void *unused) \
674 { \
675 kodi::addon::CAddonBase::m_strGlobalApiVersion = globalApiVersion; \
676 return ADDON_Create(addonInterface, unused); \
677 } \
639 extern "C" __declspec(dllexport) void ADDON_Destroy() \ 678 extern "C" __declspec(dllexport) void ADDON_Destroy() \
640 { \ 679 { \
641 kodi::addon::CAddonBase::ADDONBASE_Destroy(); \ 680 kodi::addon::CAddonBase::ADDONBASE_Destroy(); \
@@ -652,4 +691,10 @@ inline void* GetInterface(const std::string &name, const std::string &version)
652 { \ 691 { \
653 return kodi::addon::GetTypeVersion(type); \ 692 return kodi::addon::GetTypeVersion(type); \
654 } \ 693 } \
655 AddonGlobalInterface* kodi::addon::CAddonBase::m_interface = nullptr; 694 extern "C" __declspec(dllexport) const char* ADDON_GetTypeMinVersion(int type) \
695 { \
696 return kodi::addon::GetTypeMinVersion(type); \
697 } \
698 AddonGlobalInterface* kodi::addon::CAddonBase::m_interface = nullptr; \
699 std::string kodi::addon::CAddonBase::m_strGlobalApiVersion;
700
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
index f188f34..e7a8a05 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
@@ -14,7 +14,7 @@
14#ifdef BUILD_KODI_ADDON 14#ifdef BUILD_KODI_ADDON
15#include "../ActionIDs.h" 15#include "../ActionIDs.h"
16#else 16#else
17#include "input/ActionIDs.h" 17#include "input/actions/ActionIDs.h"
18#endif 18#endif
19 19
20namespace kodi 20namespace kodi
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
index 478f81b..4338606 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
@@ -153,31 +153,42 @@ game_input_topology* GetTopology();
153void FreeTopology(game_input_topology* topology); 153void FreeTopology(game_input_topology* topology);
154 154
155/*! 155/*!
156 * \brief Set the layouts for known controllers
157 *
158 * \param controllers The controller layouts
159 * \param controller_count The number of items in the array
160 *
161 * After loading the input topology, the frontend will call this with
162 * controller layouts for all controllers discovered in the topology.
163 */
164void SetControllerLayouts(const game_controller_layout* controllers, unsigned int controller_count);
165
166/*!
156 * \brief Enable/disable keyboard input using the specified controller 167 * \brief Enable/disable keyboard input using the specified controller
157 * 168 *
158 * \param enable True to enable input, false otherwise 169 * \param enable True to enable input, false otherwise
159 * \param controller The controller info if enabling, or unused if disabling 170 * \param controller_id The controller ID if enabling, or unused if disabling
160 * 171 *
161 * \return True if keyboard input was enabled, false otherwise 172 * \return True if keyboard input was enabled, false otherwise
162 */ 173 */
163bool EnableKeyboard(bool enable, const game_controller* controller); 174bool EnableKeyboard(bool enable, const char* controller_id);
164 175
165/*! 176/*!
166 * \brief Enable/disable mouse input using the specified controller 177 * \brief Enable/disable mouse input using the specified controller
167 * 178 *
168 * \param enable True to enable input, false otherwise 179 * \param enable True to enable input, false otherwise
169 * \param controller The controller info if enabling, or unused if disabling 180 * \param controller_id The controller ID if enabling, or unused if disabling
170 * 181 *
171 * \return True if mouse input was enabled, false otherwise 182 * \return True if mouse input was enabled, false otherwise
172 */ 183 */
173bool EnableMouse(bool enable, const game_controller* controller); 184bool EnableMouse(bool enable, const char* controller_id);
174 185
175/*! 186/*!
176 * \brief Connect/disconnect a controller to a port on the virtual game console 187 * \brief Connect/disconnect a controller to a port on the virtual game console
177 * 188 *
178 * \param connect True to connect a controller, false to disconnect 189 * \param connect True to connect a controller, false to disconnect
179 * \param port_address The address of the port 190 * \param port_address The address of the port
180 * \param controller The controller info if connecting, or unused if disconnecting 191 * \param controller_id The controller ID if connecting, or unused if disconnecting
181 * \return True if the \p controller was (dis-)connected to the port, false otherwise 192 * \return True if the \p controller was (dis-)connected to the port, false otherwise
182 * 193 *
183 * The address is a string that allows traversal of the controller topology. 194 * The address is a string that allows traversal of the controller topology.
@@ -203,17 +214,17 @@ bool EnableMouse(bool enable, const game_controller* controller);
203 * To connect a multitap to the console's first port, the multitap's controller 214 * To connect a multitap to the console's first port, the multitap's controller
204 * info is set using the port address: 215 * info is set using the port address:
205 * 216 *
206 * 1 217 * /1
207 * 218 *
208 * To connect a SNES controller to the second port of the multitap, the 219 * To connect a SNES controller to the second port of the multitap, the
209 * controller info is next set using the address: 220 * controller info is next set using the address:
210 * 221 *
211 * 1/game.controller.multitap/2 222 * /1/game.controller.multitap/2
212 * 223 *
213 * Any attempts to connect a controller to a port on a disconnected multitap 224 * Any attempts to connect a controller to a port on a disconnected multitap
214 * will return false. 225 * will return false.
215 */ 226 */
216bool ConnectController(bool connect, const char* port_address, const game_controller* controller); 227bool ConnectController(bool connect, const char* port_address, const char* controller_id);
217 228
218/*! 229/*!
219 * \brief Notify the add-on of an input event 230 * \brief Notify the add-on of an input event
@@ -310,6 +321,7 @@ void __declspec(dllexport) get_addon(void* ptr)
310 pClient->toAddon.HasFeature = HasFeature; 321 pClient->toAddon.HasFeature = HasFeature;
311 pClient->toAddon.GetTopology = GetTopology; 322 pClient->toAddon.GetTopology = GetTopology;
312 pClient->toAddon.FreeTopology = FreeTopology; 323 pClient->toAddon.FreeTopology = FreeTopology;
324 pClient->toAddon.SetControllerLayouts = SetControllerLayouts;
313 pClient->toAddon.EnableKeyboard = EnableKeyboard; 325 pClient->toAddon.EnableKeyboard = EnableKeyboard;
314 pClient->toAddon.EnableMouse = EnableMouse; 326 pClient->toAddon.EnableMouse = EnableMouse;
315 pClient->toAddon.ConnectController = ConnectController; 327 pClient->toAddon.ConnectController = ConnectController;
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
index e3187d2..ec9d472 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
@@ -446,19 +446,27 @@ typedef enum GAME_PORT_TYPE
446 GAME_PORT_CONTROLLER, 446 GAME_PORT_CONTROLLER,
447} GAME_PORT_TYPE; 447} GAME_PORT_TYPE;
448 448
449typedef struct game_controller 449typedef struct game_controller_layout
450{ 450{
451 const char* controller_id; 451 char* controller_id;
452 bool provides_input; // False for multitaps 452 bool provides_input; // False for multitaps
453 char** digital_buttons;
453 unsigned int digital_button_count; 454 unsigned int digital_button_count;
455 char** analog_buttons;
454 unsigned int analog_button_count; 456 unsigned int analog_button_count;
457 char** analog_sticks;
455 unsigned int analog_stick_count; 458 unsigned int analog_stick_count;
459 char** accelerometers;
456 unsigned int accelerometer_count; 460 unsigned int accelerometer_count;
461 char** keys;
457 unsigned int key_count; 462 unsigned int key_count;
463 char** rel_pointers;
458 unsigned int rel_pointer_count; 464 unsigned int rel_pointer_count;
465 char** abs_pointers;
459 unsigned int abs_pointer_count; 466 unsigned int abs_pointer_count;
467 char** motors;
460 unsigned int motor_count; 468 unsigned int motor_count;
461} ATTRIBUTE_PACKED game_controller; 469} ATTRIBUTE_PACKED game_controller_layout;
462 470
463struct game_input_port; 471struct game_input_port;
464 472
@@ -680,9 +688,10 @@ typedef struct KodiToAddonFuncTable_Game
680 bool (__cdecl* HasFeature)(const char*, const char*); 688 bool (__cdecl* HasFeature)(const char*, const char*);
681 game_input_topology* (__cdecl* GetTopology)(); 689 game_input_topology* (__cdecl* GetTopology)();
682 void (__cdecl* FreeTopology)(game_input_topology*); 690 void (__cdecl* FreeTopology)(game_input_topology*);
683 bool (__cdecl* EnableKeyboard)(bool, const game_controller*); 691 void (__cdecl* SetControllerLayouts)(const game_controller_layout*, unsigned int);
684 bool (__cdecl* EnableMouse)(bool, const game_controller*); 692 bool (__cdecl* EnableKeyboard)(bool, const char*);
685 bool (__cdecl* ConnectController)(bool, const char*, const game_controller*); 693 bool (__cdecl* EnableMouse)(bool, const char*);
694 bool (__cdecl* ConnectController)(bool, const char*, const char*);
686 bool (__cdecl* InputEvent)(const game_input_event*); 695 bool (__cdecl* InputEvent)(const game_input_event*);
687 size_t (__cdecl* SerializeSize)(void); 696 size_t (__cdecl* SerializeSize)(void);
688 GAME_ERROR (__cdecl* Serialize)(uint8_t*, size_t); 697 GAME_ERROR (__cdecl* Serialize)(uint8_t*, size_t);
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
index b518c28..2e6459b 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
@@ -135,15 +135,15 @@ public:
135 // --- Input callbacks ------------------------------------------------------- 135 // --- Input callbacks -------------------------------------------------------
136 136
137 /*! 137 /*!
138 * \brief Notify the port of an input event 138 * \brief Notify the port of an input event
139 * 139 *
140 * \param event The input event 140 * \param event The input event
141 * 141 *
142 * Input events can arrive for the following sources: 142 * Input events can arrive for the following sources:
143 * - GAME_INPUT_EVENT_MOTOR 143 * - GAME_INPUT_EVENT_MOTOR
144 * 144 *
145 * \return true if the event was handled, false otherwise 145 * \return true if the event was handled, false otherwise
146 */ 146 */
147 bool InputEvent(const game_input_event& event) 147 bool InputEvent(const game_input_event& event)
148 { 148 {
149 return m_callbacks->toKodi.InputEvent(m_callbacks->toKodi.kodiInstance, &event); 149 return m_callbacks->toKodi.InputEvent(m_callbacks->toKodi.kodiInstance, &event);
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
index 5127f7e..06d75e0 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
@@ -30,7 +30,7 @@
30 * overview. 30 * overview.
31 */ 31 */
32 32
33#define ADDON_GLOBAL_VERSION_MAIN "1.0.13" 33#define ADDON_GLOBAL_VERSION_MAIN "1.0.14"
34#define ADDON_GLOBAL_VERSION_MAIN_MIN "1.0.12" 34#define ADDON_GLOBAL_VERSION_MAIN_MIN "1.0.12"
35#define ADDON_GLOBAL_VERSION_MAIN_XML_ID "kodi.binary.global.main" 35#define ADDON_GLOBAL_VERSION_MAIN_XML_ID "kodi.binary.global.main"
36#define ADDON_GLOBAL_VERSION_MAIN_DEPENDS "AddonBase.h" \ 36#define ADDON_GLOBAL_VERSION_MAIN_DEPENDS "AddonBase.h" \
@@ -75,8 +75,8 @@
75#define ADDON_INSTANCE_VERSION_AUDIOENCODER_XML_ID "kodi.binary.instance.audioencoder" 75#define ADDON_INSTANCE_VERSION_AUDIOENCODER_XML_ID "kodi.binary.instance.audioencoder"
76#define ADDON_INSTANCE_VERSION_AUDIOENCODER_DEPENDS "addon-instance/AudioEncoder.h" 76#define ADDON_INSTANCE_VERSION_AUDIOENCODER_DEPENDS "addon-instance/AudioEncoder.h"
77 77
78#define ADDON_INSTANCE_VERSION_GAME "1.0.38" 78#define ADDON_INSTANCE_VERSION_GAME "1.1.0"
79#define ADDON_INSTANCE_VERSION_GAME_MIN "1.0.38" 79#define ADDON_INSTANCE_VERSION_GAME_MIN "1.1.0"
80#define ADDON_INSTANCE_VERSION_GAME_XML_ID "kodi.binary.instance.game" 80#define ADDON_INSTANCE_VERSION_GAME_XML_ID "kodi.binary.instance.game"
81#define ADDON_INSTANCE_VERSION_GAME_DEPENDS "kodi_game_dll.h" \ 81#define ADDON_INSTANCE_VERSION_GAME_DEPENDS "kodi_game_dll.h" \
82 "kodi_game_types.h" \ 82 "kodi_game_types.h" \
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
index e9e7d9a..ce2bc98 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
@@ -15,6 +15,7 @@ extern "C" {
15#endif 15#endif
16 16
17 ADDON_STATUS __declspec(dllexport) ADDON_Create(void *callbacks, void* props); 17 ADDON_STATUS __declspec(dllexport) ADDON_Create(void *callbacks, void* props);
18 ADDON_STATUS __declspec(dllexport) ADDON_CreateEx(void *callbacks, const char* globalApiVersion, void* props);
18 void __declspec(dllexport) ADDON_Destroy(); 19 void __declspec(dllexport) ADDON_Destroy();
19 ADDON_STATUS __declspec(dllexport) ADDON_GetStatus(); 20 ADDON_STATUS __declspec(dllexport) ADDON_GetStatus();
20 ADDON_STATUS __declspec(dllexport) ADDON_SetSetting(const char *settingName, const void *settingValue); 21 ADDON_STATUS __declspec(dllexport) ADDON_SetSetting(const char *settingName, const void *settingValue);
@@ -22,6 +23,10 @@ extern "C" {
22 { 23 {
23 return kodi::addon::GetTypeVersion(type); 24 return kodi::addon::GetTypeVersion(type);
24 } 25 }
26 __declspec(dllexport) const char* ADDON_GetTypeMinVersion(int type)
27 {
28 return kodi::addon::GetTypeMinVersion(type);
29 }
25 30
26#ifdef __cplusplus 31#ifdef __cplusplus
27}; 32};
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
index 27fa800..42a2abd 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
@@ -413,6 +413,7 @@ extern "C"
413 * @param channel The channel to stream. 413 * @param channel The channel to stream.
414 * @return True if the stream has been opened successfully, false otherwise. 414 * @return True if the stream has been opened successfully, false otherwise.
415 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. 415 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true.
416 * CloseLiveStream() will always be called by Kodi prior to calling this function.
416 * Return false if this add-on won't provide this function. 417 * Return false if this add-on won't provide this function.
417 */ 418 */
418 bool OpenLiveStream(const PVR_CHANNEL& channel); 419 bool OpenLiveStream(const PVR_CHANNEL& channel);
@@ -497,7 +498,7 @@ extern "C"
497 * Get the stream properties of the stream that's currently being read. 498 * Get the stream properties of the stream that's currently being read.
498 * @param pProperties The properties of the currently playing stream. 499 * @param pProperties The properties of the currently playing stream.
499 * @return PVR_ERROR_NO_ERROR if the properties have been fetched successfully. 500 * @return PVR_ERROR_NO_ERROR if the properties have been fetched successfully.
500 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. 501 * @remarks Required if bHandlesDemuxing is set to true.
501 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 502 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
502 */ 503 */
503 PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties); 504 PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties);
@@ -523,6 +524,7 @@ extern "C"
523 * @param recording The recording to open. 524 * @param recording The recording to open.
524 * @return True if the stream has been opened successfully, false otherwise. 525 * @return True if the stream has been opened successfully, false otherwise.
525 * @remarks Optional, and only used if bSupportsRecordings is set to true. 526 * @remarks Optional, and only used if bSupportsRecordings is set to true.
527 * CloseRecordedStream() will always be called by Kodi prior to calling this function.
526 * Return false if this add-on won't provide this function. 528 * Return false if this add-on won't provide this function.
527 */ 529 */
528 bool OpenRecordedStream(const PVR_RECORDING& recording); 530 bool OpenRecordedStream(const PVR_RECORDING& recording);
diff --git a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
index 5aed400..f8ceab2 100644
--- a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
+++ b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
@@ -24,7 +24,7 @@ typedef struct DemuxPacket
24 uint8_t *pData = nullptr; 24 uint8_t *pData = nullptr;
25 int iSize = 0; 25 int iSize = 0;
26 int iStreamId = -1; 26 int iStreamId = -1;
27 int64_t demuxerId; // id of the demuxer that created the packet 27 int64_t demuxerId = -1; // id of the demuxer that created the packet
28 int iGroupId = -1; // the group this data belongs to, used to group data from different streams together 28 int iGroupId = -1; // the group this data belongs to, used to group data from different streams together
29 29
30 void *pSideData = nullptr; 30 void *pSideData = nullptr;
diff --git a/xbmc/filesystem/IFileTypes.h b/xbmc/filesystem/IFileTypes.h
index 7470b15..6817752 100644
--- a/xbmc/filesystem/IFileTypes.h
+++ b/xbmc/filesystem/IFileTypes.h
@@ -51,7 +51,7 @@ struct SCacheStatus
51 uint64_t forward; /**< number of bytes cached forward of current position */ 51 uint64_t forward; /**< number of bytes cached forward of current position */
52 unsigned maxrate; /**< maximum number of bytes per second cache is allowed to fill */ 52 unsigned maxrate; /**< maximum number of bytes per second cache is allowed to fill */
53 unsigned currate; /**< average read rate from source file since last position change */ 53 unsigned currate; /**< average read rate from source file since last position change */
54 float level; /**< cache level (0.0 - 1.0) */ 54 bool lowspeed; /**< cache low speed condition detected? */
55}; 55};
56 56
57typedef enum { 57typedef enum {
diff --git a/xbmc/input/actions/ActionIDs.h b/xbmc/input/actions/ActionIDs.h
new file mode 100644
index 0000000..cf8a484
--- /dev/null
+++ b/xbmc/input/actions/ActionIDs.h
@@ -0,0 +1,311 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11/**
12 * \defgroup kodi_key_action_ids Action Id's
13 * \ingroup python_xbmcgui_window_cb
14 * \ingroup python_xbmcgui_action
15 * @{
16 * @brief Actions that we have defined.
17 */
18#define ACTION_NONE 0
19#define ACTION_MOVE_LEFT 1
20#define ACTION_MOVE_RIGHT 2
21#define ACTION_MOVE_UP 3
22#define ACTION_MOVE_DOWN 4
23#define ACTION_PAGE_UP 5
24#define ACTION_PAGE_DOWN 6
25#define ACTION_SELECT_ITEM 7
26#define ACTION_HIGHLIGHT_ITEM 8
27#define ACTION_PARENT_DIR 9
28#define ACTION_PREVIOUS_MENU 10
29#define ACTION_SHOW_INFO 11
30
31#define ACTION_PAUSE 12
32#define ACTION_STOP 13
33#define ACTION_NEXT_ITEM 14
34#define ACTION_PREV_ITEM 15
35#define ACTION_FORWARD 16 //!< Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_*
36#define ACTION_REWIND 17 //!< Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_*
37
38#define ACTION_SHOW_GUI 18 //!< toggle between GUI and movie or GUI and visualisation.
39#define ACTION_ASPECT_RATIO 19 //!< toggle quick-access zoom modes. Can b used in videoFullScreen.zml window id=2005
40#define ACTION_STEP_FORWARD 20 //!< seek +1% in the movie. Can b used in videoFullScreen.xml window id=2005
41#define ACTION_STEP_BACK 21 //!< seek -1% in the movie. Can b used in videoFullScreen.xml window id=2005
42#define ACTION_BIG_STEP_FORWARD 22 //!< seek +10% in the movie. Can b used in videoFullScreen.xml window id=2005
43#define ACTION_BIG_STEP_BACK 23 //!< seek -10% in the movie. Can b used in videoFullScreen.xml window id=2005
44#define ACTION_SHOW_OSD 24 //!< show/hide OSD. Can b used in videoFullScreen.xml window id=2005
45#define ACTION_SHOW_SUBTITLES 25 //!< turn subtitles on/off. Can b used in videoFullScreen.xml window id=2005
46#define ACTION_NEXT_SUBTITLE 26 //!< switch to next subtitle of movie. Can b used in videoFullScreen.xml window id=2005
47#define ACTION_BROWSE_SUBTITLE 247 //!< Browse for subtitle. Can be used in videofullscreen
48#define ACTION_PLAYER_DEBUG 27 //!< show debug info for VideoPlayer
49#define ACTION_NEXT_PICTURE 28 //!< show next picture of slideshow. Can b used in slideshow.xml window id=2007
50#define ACTION_PREV_PICTURE 29 //!< show previous picture of slideshow. Can b used in slideshow.xml window id=2007
51#define ACTION_ZOOM_OUT 30 //!< zoom in picture during slideshow. Can b used in slideshow.xml window id=2007
52#define ACTION_ZOOM_IN 31 //!< zoom out picture during slideshow. Can b used in slideshow.xml window id=2007
53#define ACTION_TOGGLE_SOURCE_DEST 32 //!< used to toggle between source view and destination view. Can be used in myfiles.xml window id=3
54#define ACTION_SHOW_PLAYLIST 33 //!< used to toggle between current view and playlist view. Can b used in all mymusic xml files
55#define ACTION_QUEUE_ITEM 34 //!< used to queue a item to the playlist. Can b used in all mymusic xml files
56#define ACTION_REMOVE_ITEM 35 //!< not used anymore
57#define ACTION_SHOW_FULLSCREEN 36 //!< not used anymore
58#define ACTION_ZOOM_LEVEL_NORMAL 37 //!< zoom 1x picture during slideshow. Can b used in slideshow.xml window id=2007
59#define ACTION_ZOOM_LEVEL_1 38 //!< zoom 2x picture during slideshow. Can b used in slideshow.xml window id=2007
60#define ACTION_ZOOM_LEVEL_2 39 //!< zoom 3x picture during slideshow. Can b used in slideshow.xml window id=2007
61#define ACTION_ZOOM_LEVEL_3 40 //!< zoom 4x picture during slideshow. Can b used in slideshow.xml window id=2007
62#define ACTION_ZOOM_LEVEL_4 41 //!< zoom 5x picture during slideshow. Can b used in slideshow.xml window id=2007
63#define ACTION_ZOOM_LEVEL_5 42 //!< zoom 6x picture during slideshow. Can b used in slideshow.xml window id=2007
64#define ACTION_ZOOM_LEVEL_6 43 //!< zoom 7x picture during slideshow. Can b used in slideshow.xml window id=2007
65#define ACTION_ZOOM_LEVEL_7 44 //!< zoom 8x picture during slideshow. Can b used in slideshow.xml window id=2007
66#define ACTION_ZOOM_LEVEL_8 45 //!< zoom 9x picture during slideshow. Can b used in slideshow.xml window id=2007
67#define ACTION_ZOOM_LEVEL_9 46 //!< zoom 10x picture during slideshow. Can b used in slideshow.xml window id=2007
68
69#define ACTION_CALIBRATE_SWAP_ARROWS 47 //!< select next arrow. Can b used in: settingsScreenCalibration.xml windowid=11
70#define ACTION_CALIBRATE_RESET 48 //!< reset calibration to defaults. Can b used in: `settingsScreenCalibration.xml` windowid=11/settingsUICalibration.xml windowid=10
71#define ACTION_ANALOG_MOVE 49 //!< analog thumbstick move. Can b used in: `slideshow.xml` windowid=2007/settingsScreenCalibration.xml windowid=11/settingsUICalibration.xml windowid=10
72 //!< @note see also ACTION_ANALOG_MOVE_X_LEFT, ACTION_ANALOG_MOVE_X_RIGHT, ACTION_ANALOG_MOVE_Y_UP, ACTION_ANALOG_MOVE_Y_DOWN
73#define ACTION_ROTATE_PICTURE_CW 50 //!< rotate current picture clockwise during slideshow. Can be used in slideshow.xml window id=2007
74#define ACTION_ROTATE_PICTURE_CCW 51 //!< rotate current picture counterclockwise during slideshow. Can be used in slideshow.xml window id=2007
75
76#define ACTION_SUBTITLE_DELAY_MIN 52 //!< Decrease subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005
77#define ACTION_SUBTITLE_DELAY_PLUS 53 //!< Increase subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005
78#define ACTION_AUDIO_DELAY_MIN 54 //!< Increase avsync delay. Can b used in videoFullScreen.xml window id=2005
79#define ACTION_AUDIO_DELAY_PLUS 55 //!< Decrease avsync delay. Can b used in videoFullScreen.xml window id=2005
80#define ACTION_AUDIO_NEXT_LANGUAGE 56 //!< Select next language in movie. Can b used in videoFullScreen.xml window id=2005
81#define ACTION_CHANGE_RESOLUTION 57 //!< switch 2 next resolution. Can b used during screen calibration settingsScreenCalibration.xml windowid=11
82
83#define REMOTE_0 58 //!< remote keys 0-9. are used by multiple windows
84#define REMOTE_1 59 //!< for example in videoFullScreen.xml window id=2005 you can
85#define REMOTE_2 60 //!< enter time (mmss) to jump to particular point in the movie
86#define REMOTE_3 61
87#define REMOTE_4 62 //!< with spincontrols you can enter 3digit number to quickly set
88#define REMOTE_5 63 //!< spincontrol to desired value
89#define REMOTE_6 64
90#define REMOTE_7 65
91#define REMOTE_8 66
92#define REMOTE_9 67
93
94#define ACTION_PLAYER_PROCESS_INFO 69 //!< show player process info (video decoder, pixel format, pvr signal strength and the like
95#define ACTION_PLAYER_PROGRAM_SELECT 70
96#define ACTION_PLAYER_RESOLUTION_SELECT 71
97#define ACTION_SMALL_STEP_BACK 76 //!< jumps a few seconds back during playback of movie. Can b used in videoFullScreen.xml window id=2005
98
99#define ACTION_PLAYER_FORWARD 77 //!< FF in current file played. global action, can be used anywhere
100#define ACTION_PLAYER_REWIND 78 //!< RW in current file played. global action, can be used anywhere
101#define ACTION_PLAYER_PLAY 79 //!< Play current song. Unpauses song and sets playspeed to 1x. global action, can be used anywhere
102
103#define ACTION_DELETE_ITEM 80 //!< delete current selected item. Can be used in myfiles.xml window id=3 and in myvideoTitle.xml window id=25
104#define ACTION_COPY_ITEM 81 //!< copy current selected item. Can be used in myfiles.xml window id=3
105#define ACTION_MOVE_ITEM 82 //!< move current selected item. Can be used in myfiles.xml window id=3
106#define ACTION_TAKE_SCREENSHOT 85 //!< take a screenshot
107#define ACTION_RENAME_ITEM 87 //!< rename item
108
109#define ACTION_VOLUME_UP 88
110#define ACTION_VOLUME_DOWN 89
111#define ACTION_VOLAMP 90
112#define ACTION_MUTE 91
113#define ACTION_NAV_BACK 92
114#define ACTION_VOLAMP_UP 93
115#define ACTION_VOLAMP_DOWN 94
116
117#define ACTION_CREATE_EPISODE_BOOKMARK 95 //!< Creates an episode bookmark on the currently playing video file containing more than one episode
118#define ACTION_CREATE_BOOKMARK 96 //!< Creates a bookmark of the currently playing video file
119
120#define ACTION_CHAPTER_OR_BIG_STEP_FORWARD 97 //!< Goto the next chapter, if not available perform a big step forward
121#define ACTION_CHAPTER_OR_BIG_STEP_BACK 98 //!< Goto the previous chapter, if not available perform a big step back
122
123#define ACTION_CYCLE_SUBTITLE 99 //!< switch to next subtitle of movie, but will not enable/disable the subtitles. Can be used in videoFullScreen.xml window id=2005
124
125#define ACTION_MOUSE_START 100
126#define ACTION_MOUSE_LEFT_CLICK 100
127#define ACTION_MOUSE_RIGHT_CLICK 101
128#define ACTION_MOUSE_MIDDLE_CLICK 102
129#define ACTION_MOUSE_DOUBLE_CLICK 103
130#define ACTION_MOUSE_WHEEL_UP 104
131#define ACTION_MOUSE_WHEEL_DOWN 105
132#define ACTION_MOUSE_DRAG 106
133#define ACTION_MOUSE_MOVE 107
134#define ACTION_MOUSE_LONG_CLICK 108
135#define ACTION_MOUSE_END 109
136
137#define ACTION_BACKSPACE 110
138#define ACTION_SCROLL_UP 111
139#define ACTION_SCROLL_DOWN 112
140#define ACTION_ANALOG_FORWARD 113
141#define ACTION_ANALOG_REWIND 114
142
143#define ACTION_MOVE_ITEM_UP 115 //!< move item up in playlist
144#define ACTION_MOVE_ITEM_DOWN 116 //!< move item down in playlist
145#define ACTION_CONTEXT_MENU 117 //!< pops up the context menu
146
147// stuff for virtual keyboard shortcuts
148#define ACTION_SHIFT 118 //!< stuff for virtual keyboard shortcuts
149#define ACTION_SYMBOLS 119 //!< stuff for virtual keyboard shortcuts
150#define ACTION_CURSOR_LEFT 120 //!< stuff for virtual keyboard shortcuts
151#define ACTION_CURSOR_RIGHT 121 //!< stuff for virtual keyboard shortcuts
152
153#define ACTION_BUILT_IN_FUNCTION 122
154
155#define ACTION_SHOW_OSD_TIME 123 //!< displays current time, can be used in videoFullScreen.xml window id=2005
156#define ACTION_ANALOG_SEEK_FORWARD 124 //!< seeks forward, and displays the seek bar.
157#define ACTION_ANALOG_SEEK_BACK 125 //!< seeks backward, and displays the seek bar.
158
159#define ACTION_VIS_PRESET_SHOW 126
160#define ACTION_VIS_PRESET_NEXT 128
161#define ACTION_VIS_PRESET_PREV 129
162#define ACTION_VIS_PRESET_LOCK 130
163#define ACTION_VIS_PRESET_RANDOM 131
164#define ACTION_VIS_RATE_PRESET_PLUS 132
165#define ACTION_VIS_RATE_PRESET_MINUS 133
166
167#define ACTION_SHOW_VIDEOMENU 134
168#define ACTION_ENTER 135
169
170#define ACTION_INCREASE_RATING 136
171#define ACTION_DECREASE_RATING 137
172
173#define ACTION_NEXT_SCENE 138 //!< switch to next scene/cutpoint in movie
174#define ACTION_PREV_SCENE 139 //!< switch to previous scene/cutpoint in movie
175
176#define ACTION_NEXT_LETTER 140 //!< jump through a list or container by letter
177#define ACTION_PREV_LETTER 141
178
179#define ACTION_JUMP_SMS2 142 //!< jump direct to a particular letter using SMS-style input
180#define ACTION_JUMP_SMS3 143
181#define ACTION_JUMP_SMS4 144
182#define ACTION_JUMP_SMS5 145
183#define ACTION_JUMP_SMS6 146
184#define ACTION_JUMP_SMS7 147
185#define ACTION_JUMP_SMS8 148
186#define ACTION_JUMP_SMS9 149
187
188#define ACTION_FILTER_CLEAR 150
189#define ACTION_FILTER_SMS2 151
190#define ACTION_FILTER_SMS3 152
191#define ACTION_FILTER_SMS4 153
192#define ACTION_FILTER_SMS5 154
193#define ACTION_FILTER_SMS6 155
194#define ACTION_FILTER_SMS7 156
195#define ACTION_FILTER_SMS8 157
196#define ACTION_FILTER_SMS9 158
197
198#define ACTION_FIRST_PAGE 159
199#define ACTION_LAST_PAGE 160
200
201#define ACTION_AUDIO_DELAY 161
202#define ACTION_SUBTITLE_DELAY 162
203#define ACTION_MENU 163
204
205#define ACTION_SET_RATING 164
206
207#define ACTION_RECORD 170
208
209#define ACTION_PASTE 180
210#define ACTION_NEXT_CONTROL 181
211#define ACTION_PREV_CONTROL 182
212#define ACTION_CHANNEL_SWITCH 183
213#define ACTION_CHANNEL_UP 184
214#define ACTION_CHANNEL_DOWN 185
215#define ACTION_NEXT_CHANNELGROUP 186
216#define ACTION_PREVIOUS_CHANNELGROUP 187
217#define ACTION_PVR_PLAY 188
218#define ACTION_PVR_PLAY_TV 189
219#define ACTION_PVR_PLAY_RADIO 190
220#define ACTION_PVR_SHOW_TIMER_RULE 191
221#define ACTION_CHANNEL_NUMBER_SEP 192
222
223#define ACTION_TOGGLE_FULLSCREEN 199 //!< switch 2 desktop resolution
224#define ACTION_TOGGLE_WATCHED 200 //!< Toggle watched status (videos)
225#define ACTION_SCAN_ITEM 201 //!< scan item
226#define ACTION_TOGGLE_DIGITAL_ANALOG 202 //!< switch digital <-> analog
227#define ACTION_RELOAD_KEYMAPS 203 //!< reloads CButtonTranslator's keymaps
228#define ACTION_GUIPROFILE_BEGIN 204 //!< start the GUIControlProfiler running
229
230#define ACTION_TELETEXT_RED 215 //!< Teletext Color button <b>Red</b> to control TopText
231#define ACTION_TELETEXT_GREEN 216 //!< Teletext Color button <b>Green</b> to control TopText
232#define ACTION_TELETEXT_YELLOW 217 //!< Teletext Color button <b>Yellow</b> to control TopText
233#define ACTION_TELETEXT_BLUE 218 //!< Teletext Color button <b>Blue</b> to control TopText
234
235#define ACTION_INCREASE_PAR 219
236#define ACTION_DECREASE_PAR 220
237
238#define ACTION_VSHIFT_UP 227 //!< shift up video image in VideoPlayer
239#define ACTION_VSHIFT_DOWN 228 //!< shift down video image in VideoPlayer
240
241#define ACTION_PLAYER_PLAYPAUSE 229 //!< Play/pause. If playing it pauses, if paused it plays.
242
243#define ACTION_SUBTITLE_VSHIFT_UP 230 //!< shift up subtitles in VideoPlayer
244#define ACTION_SUBTITLE_VSHIFT_DOWN 231 //!< shift down subtitles in VideoPlayer
245#define ACTION_SUBTITLE_ALIGN 232 //!< toggle vertical alignment of subtitles
246
247#define ACTION_FILTER 233
248
249#define ACTION_SWITCH_PLAYER 234
250
251#define ACTION_STEREOMODE_NEXT 235
252#define ACTION_STEREOMODE_PREVIOUS 236
253#define ACTION_STEREOMODE_TOGGLE 237 //!< turns 3d mode on/off
254#define ACTION_STEREOMODE_SELECT 238
255#define ACTION_STEREOMODE_TOMONO 239
256#define ACTION_STEREOMODE_SET 240
257
258#define ACTION_SETTINGS_RESET 241
259#define ACTION_SETTINGS_LEVEL_CHANGE 242
260
261#define ACTION_TRIGGER_OSD 243 //!< show autoclosing OSD. Can b used in videoFullScreen.xml window id=2005
262#define ACTION_INPUT_TEXT 244
263#define ACTION_VOLUME_SET 245
264#define ACTION_TOGGLE_COMMSKIP 246
265
266#define ACTION_PLAYER_RESET 248 //!< Send a reset command to the active game
267
268#define ACTION_TOGGLE_FONT 249 //!< Toggle font. Used in TextViewer dialog
269
270#define ACTION_VIDEO_NEXT_STREAM 250 //!< Cycle video streams. Used in videofullscreen.
271#define ACTION_QUEUE_ITEM_NEXT 251 //!< used to queue an item to the next position in the playlist
272
273// Voice actions
274#define ACTION_VOICE_RECOGNIZE 300
275
276// Touch actions
277#define ACTION_TOUCH_TAP 401 //!< touch actions
278#define ACTION_TOUCH_TAP_TEN 410 //!< touch actions
279#define ACTION_TOUCH_LONGPRESS 411 //!< touch actions
280#define ACTION_TOUCH_LONGPRESS_TEN 420 //!< touch actions
281
282#define ACTION_GESTURE_NOTIFY 500
283#define ACTION_GESTURE_BEGIN 501
284#define ACTION_GESTURE_ZOOM 502 //!< sendaction with point and currentPinchScale (fingers together < 1.0 -> fingers apart > 1.0)
285#define ACTION_GESTURE_ROTATE 503
286#define ACTION_GESTURE_PAN 504
287#define ACTION_GESTURE_ABORT 505 //!< gesture was interrupted in unspecified state
288
289#define ACTION_GESTURE_SWIPE_LEFT 511
290#define ACTION_GESTURE_SWIPE_LEFT_TEN 520
291#define ACTION_GESTURE_SWIPE_RIGHT 521
292#define ACTION_GESTURE_SWIPE_RIGHT_TEN 530
293#define ACTION_GESTURE_SWIPE_UP 531
294#define ACTION_GESTURE_SWIPE_UP_TEN 540
295#define ACTION_GESTURE_SWIPE_DOWN 541
296#define ACTION_GESTURE_SWIPE_DOWN_TEN 550
297// 5xx is reserved for additional gesture actions
298#define ACTION_GESTURE_END 599
299
300// other, non-gesture actions
301#define ACTION_ANALOG_MOVE_X_LEFT 601 //!< analog thumbstick move, horizontal axis, left; see ACTION_ANALOG_MOVE
302#define ACTION_ANALOG_MOVE_X_RIGHT 602 //!< analog thumbstick move, horizontal axis, right; see ACTION_ANALOG_MOVE
303#define ACTION_ANALOG_MOVE_Y_UP 603 //!< analog thumbstick move, vertical axis, up; see ACTION_ANALOG_MOVE
304#define ACTION_ANALOG_MOVE_Y_DOWN 604 //!< analog thumbstick move, vertical axis, down; see ACTION_ANALOG_MOVE
305//@}
306
307// The NOOP action can be specified to disable an input event. This is
308// useful in user keyboard.xml etc to disable actions specified in the
309// system mappings. ERROR action is used to play an error sound
310#define ACTION_ERROR 998
311#define ACTION_NOOP 999
diff --git a/xbmc/interfaces/json-rpc/schema/version.txt b/xbmc/interfaces/json-rpc/schema/version.txt
index e32fb7a..25c4361 100644
--- a/xbmc/interfaces/json-rpc/schema/version.txt
+++ b/xbmc/interfaces/json-rpc/schema/version.txt
@@ -1 +1 @@
JSONRPC_VERSION 9.6.1 JSONRPC_VERSION 10.3.0