diff options
19 files changed, 137 insertions, 592 deletions
diff --git a/.gitignore b/.gitignore index 83895b5878..759df66a63 100644 --- a/.gitignore +++ b/.gitignore @@ -149,7 +149,6 @@ cmake_install.cmake /lib/addons/library.kodi.guilib/project/VS2010Express/Debug /lib/addons/library.xbmc.addon/Makefile /lib/addons/library.kodi.adsp/Makefile -/lib/addons/library.xbmc.pvr/Makefile /lib/addons/library.xbmc.codec/Makefile /lib/addons/library.kodi.peripheral/Makefile /lib/addons/library.kodi.game/Makefile @@ -159,8 +158,6 @@ cmake_install.cmake /lib/addons/library.kodi.adsp/project/VS2010Express/Debug /lib/addons/library.xbmc.codec/project/VS2010Express/Release /lib/addons/library.xbmc.codec/project/VS2010Express/Debug -/lib/addons/library.xbmc.pvr/project/VS2010Express/Release -/lib/addons/library.xbmc.pvr/project/VS2010Express/Debug /lib/addons/library.kodi.audioengine/Makefile /lib/addons/library.kodi.audioengine/project/VS2010Express/Release/ /lib/addons/library.kodi.audioengine/project/VS2010Express/Debug/ @@ -551,8 +548,6 @@ lib/cpluff/stamp-h1 /addons/library.xbmc.codec/libXBMC_codec.lib /addons/library.kodi.guilib/libKODI_guilib.dll /addons/library.kodi.guilib/libKODI_guilib.lib -/addons/library.xbmc.pvr/libXBMC_pvr.dll -/addons/library.xbmc.pvr/libXBMC_pvr.lib /addons/library.kodi.audioengine/libKODI_audioengine.dll /addons/library.kodi.audioengine/libKODI_audioengine.lib diff --git a/Makefile.in b/Makefile.in index 366031cb7d..5ec26fc48d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -240,7 +240,6 @@ LIBADDON_DIRS=\ lib/addons/library.kodi.adsp \ lib/addons/library.kodi.audioengine \ lib/addons/library.xbmc.codec \ - lib/addons/library.xbmc.pvr \ lib/addons/library.kodi.guilib \ lib/addons/library.kodi.inputstream \ lib/addons/library.kodi.peripheral \ @@ -368,7 +367,6 @@ libaddon: exports $(MAKE) -C lib/addons/library.kodi.game $(MAKE) -C lib/addons/library.kodi.guilib $(MAKE) -C lib/addons/library.kodi.peripheral - $(MAKE) -C lib/addons/library.xbmc.pvr $(MAKE) -C lib/addons/library.kodi.inputstream dvdpcodecs: dllloader $(MAKE) -C lib/libdvd diff --git a/Makefile.include.in b/Makefile.include.in index 676fb5724c..f686f903ad 100644 --- a/Makefile.include.in +++ b/Makefile.include.in @@ -45,7 +45,6 @@ INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.guilib INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.addon INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.adsp INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.audioengine -INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.pvr INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.codec INCLUDES+=$(sort @INCLUDES@) INCLUDES+=-I@abs_top_srcdir@/xbmc/linux diff --git a/addons/library.xbmc.pvr/.gitignore b/addons/library.xbmc.pvr/.gitignore deleted file mode 100644 index 5e7d2734cf..0000000000 --- a/addons/library.xbmc.pvr/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/configure.ac b/configure.ac index 8d1e85e293..5112909586 100644 --- a/configure.ac +++ b/configure.ac @@ -2198,7 +2198,6 @@ OUTPUT_FILES="Makefile \ lib/addons/library.kodi.game/Makefile \ lib/addons/library.kodi.guilib/Makefile \ lib/addons/library.kodi.peripheral/Makefile \ - lib/addons/library.xbmc.pvr/Makefile \ lib/addons/library.kodi.inputstream/Makefile \ tools/Linux/kodi.sh \ tools/Linux/kodi-standalone.sh \ diff --git a/lib/addons/library.kodi.game/libKODI_game.cpp b/lib/addons/library.kodi.game/libKODI_game.cpp index cbcedc4c89..f6573736c6 100644 --- a/lib/addons/library.kodi.game/libKODI_game.cpp +++ b/lib/addons/library.kodi.game/libKODI_game.cpp @@ -41,7 +41,7 @@ DLLEXPORT CB_GameLib* GAME_register_me(AddonCB* frontend) fprintf(stderr, "ERROR: GAME_register_frontend is called with NULL handle!!!\n"); else { - cb = frontend->GameLib_RegisterMe(frontend->addonData); + cb = static_cast<CB_GameLib*>(frontend->GameLib_RegisterMe(frontend->addonData)); if (!cb) fprintf(stderr, "ERROR: GAME_register_frontend can't get callback table from frontend!!!\n"); } diff --git a/lib/addons/library.kodi.peripheral/libKODI_peripheral.cpp b/lib/addons/library.kodi.peripheral/libKODI_peripheral.cpp index bd7b293b1f..ca83473cc7 100644 --- a/lib/addons/library.kodi.peripheral/libKODI_peripheral.cpp +++ b/lib/addons/library.kodi.peripheral/libKODI_peripheral.cpp @@ -41,7 +41,7 @@ DLLEXPORT CB_PeripheralLib* PERIPHERAL_register_me(AddonCB* frontend) fprintf(stderr, "ERROR: PERIPHERAL_register_frontend is called with NULL handle!!!\n"); else { - cb = frontend->PeripheralLib_RegisterMe(frontend->addonData); + cb = static_cast<CB_PeripheralLib*>(frontend->PeripheralLib_RegisterMe(frontend->addonData)); if (!cb) fprintf(stderr, "ERROR: PERIPHERAL_register_frontend can't get callback table from frontend!!!\n"); } diff --git a/lib/addons/library.xbmc.pvr/CMakeLists.txt b/lib/addons/library.xbmc.pvr/CMakeLists.txt deleted file mode 100644 index b431fb79fe..0000000000 --- a/lib/addons/library.xbmc.pvr/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -project(XBMC_pvr) -core_add_addon_library(${PROJECT_NAME}) -target_include_directories(${PROJECT_NAME} PRIVATE ${CORE_SOURCE_DIR}/xbmc/cores/VideoPlayer/DVDDemuxers) diff --git a/lib/addons/library.xbmc.pvr/Makefile.in b/lib/addons/library.xbmc.pvr/Makefile.in deleted file mode 100644 index 472efce274..0000000000 --- a/lib/addons/library.xbmc.pvr/Makefile.in +++ /dev/null @@ -1,29 +0,0 @@ -ARCH=@ARCH@ -INCLUDES=-I. -I../../../xbmc/addons/kodi-addon-dev-kit/include -I../../../xbmc/addons/kodi-addon-dev-kit/include -I../../../xbmc -I../../../xbmc/cores/VideoPlayer/DVDDemuxers -DEFINES+= -CXXFLAGS=-fPIC -LIBNAME=libXBMC_pvr -OBJS=$(LIBNAME).o - -ifeq ($(findstring osx,$(ARCH)), osx) -LIB_SHARED=../../../addons/library.xbmc.pvr/$(LIBNAME)-$(ARCH).dylib -else -LIB_SHARED=../../../addons/library.xbmc.pvr/$(LIBNAME)-$(ARCH).so -endif - -all: $(LIB_SHARED) - -$(LIB_SHARED): $(OBJS) -ifeq ($(findstring osx,$(ARCH)), osx) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -dynamiclib -o $@ $(OBJS) -else - $(CXX) $(CFLAGS) $(LDFLAGS) -shared -g -o $(LIB_SHARED) $(OBJS) -endif - -CLEAN_FILES = \ - $(LIB_SHARED) \ - -DISTCLEAN_FILES= \ - Makefile \ - -include ../../../Makefile.include diff --git a/lib/addons/library.xbmc.pvr/libXBMC_pvr.cpp b/lib/addons/library.xbmc.pvr/libXBMC_pvr.cpp deleted file mode 100644 index c993c43d73..0000000000 --- a/lib/addons/library.xbmc.pvr/libXBMC_pvr.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (C) 2012-2013 Team XBMC - * http://xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * <http://www.gnu.org/licenses/>. - * - */ - -#define USE_DEMUX // enable including of the demuxer packet structure - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <string> -#include "addons/binary/interfaces/api1/PVR/AddonCallbacksPVR.h" -#include "addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h" -#include "cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h" - -#ifdef _WIN32 -#include <windows.h> -#define DLLEXPORT __declspec(dllexport) -#else -#define DLLEXPORT -#endif - -using namespace std; -using namespace V1::KodiAPI::PVR; - -extern "C" -{ - -DLLEXPORT void* PVR_register_me(void *hdl) -{ - CB_PVRLib *cb = NULL; - if (!hdl) - fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me is called with NULL handle !!!\n"); - else - { - cb = (CB_PVRLib*)((AddonCB*)hdl)->PVRLib_RegisterMe(((AddonCB*)hdl)->addonData); - if (!cb) - fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me can't get callback table from XBMC !!!\n"); - } - return cb; -} - -DLLEXPORT void PVR_unregister_me(void *hdl, void* cb) -{ - if (hdl && cb) - ((AddonCB*)hdl)->PVRLib_UnRegisterMe(((AddonCB*)hdl)->addonData, (CB_PVRLib*)cb); -} - -DLLEXPORT void PVR_transfer_epg_entry(void *hdl, void* cb, const ADDON_HANDLE handle, const EPG_TAG *epgentry) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferEpgEntry(((AddonCB*)hdl)->addonData, handle, epgentry); -} - -DLLEXPORT void PVR_transfer_channel_entry(void *hdl, void* cb, const ADDON_HANDLE handle, const PVR_CHANNEL *chan) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferChannelEntry(((AddonCB*)hdl)->addonData, handle, chan); -} - -DLLEXPORT void PVR_transfer_timer_entry(void *hdl, void* cb, const ADDON_HANDLE handle, const PVR_TIMER *timer) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferTimerEntry(((AddonCB*)hdl)->addonData, handle, timer); -} - -DLLEXPORT void PVR_transfer_recording_entry(void *hdl, void* cb, const ADDON_HANDLE handle, const PVR_RECORDING *recording) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferRecordingEntry(((AddonCB*)hdl)->addonData, handle, recording); -} - -DLLEXPORT void PVR_add_menu_hook(void *hdl, void* cb, PVR_MENUHOOK *hook) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->AddMenuHook(((AddonCB*)hdl)->addonData, hook); -} - -DLLEXPORT void PVR_recording(void *hdl, void* cb, const char *Name, const char *FileName, bool On) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->Recording(((AddonCB*)hdl)->addonData, Name, FileName, On); -} - -DLLEXPORT void PVR_trigger_channel_update(void *hdl, void* cb) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TriggerChannelUpdate(((AddonCB*)hdl)->addonData); -} - -DLLEXPORT void PVR_trigger_channel_groups_update(void *hdl, void* cb) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TriggerChannelGroupsUpdate(((AddonCB*)hdl)->addonData); -} - -DLLEXPORT void PVR_trigger_timer_update(void *hdl, void* cb) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TriggerTimerUpdate(((AddonCB*)hdl)->addonData); -} - -DLLEXPORT void PVR_trigger_recording_update(void *hdl, void* cb) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TriggerRecordingUpdate(((AddonCB*)hdl)->addonData); -} - -DLLEXPORT void PVR_trigger_epg_update(void* hdl, void* cb, unsigned int iChannelUid) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TriggerEpgUpdate(((AddonCB*)hdl)->addonData, iChannelUid); -} - -DLLEXPORT void PVR_free_demux_packet(void *hdl, void* cb, DemuxPacket* pPacket) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->FreeDemuxPacket(((AddonCB*)hdl)->addonData, pPacket); -} - -DLLEXPORT DemuxPacket* PVR_allocate_demux_packet(void *hdl, void* cb, int iDataSize) -{ - if (cb == NULL) - return NULL; - - return ((CB_PVRLib*)cb)->AllocateDemuxPacket(((AddonCB*)hdl)->addonData, iDataSize); -} - -DLLEXPORT void PVR_connection_state_change(void *hdl, void* cb, const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->ConnectionStateChange(((AddonCB*)hdl)->addonData, strConnectionString, newState, strMessage); -} - -DLLEXPORT void PVR_epg_event_state_change(void *hdl, void* cb, EPG_TAG *tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->EpgEventStateChange(((AddonCB*)hdl)->addonData, tag, iUniqueChannelId, newState); -} - -DLLEXPORT void PVR_transfer_channel_group(void *hdl, void* cb, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferChannelGroup(((AddonCB*)hdl)->addonData, handle, group); -} - -DLLEXPORT void PVR_transfer_channel_group_member(void *hdl, void* cb, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member) -{ - if (cb == NULL) - return; - - ((CB_PVRLib*)cb)->TransferChannelGroupMember(((AddonCB*)hdl)->addonData, handle, member); -} - -}; diff --git a/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj b/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj deleted file mode 100644 index 89ba869f9e..0000000000 --- a/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{6D8C91F8-992F-4C83-9DE3-485D64EF8420}</ProjectGuid> - <RootNamespace>XBMC_VDR</RootNamespace> - <Keyword>Win32Proj</Keyword> - <WindowsTargetPlatformVersion>10.0.10240.0</WindowsTargetPlatformVersion> - </PropertyGroup> - <Import Project="$(SolutionDir)\XBMC.core-defaults.props" /> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v140</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v140</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(SolutionDir)\XBMC.defaults.props" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\..\..\addons\library.xbmc.pvr\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\..\..\addons\library.xbmc.pvr\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir> - <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\..\..\addons\library.xbmc.addon\;$(IncludePath)</IncludePath> - <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\..\..\addons\library.xbmc.addon\;$(IncludePath)</IncludePath> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\kodi-addon-dev-kit\include;..\..\..\..\..\xbmc\cores\VideoPlayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling>Sync</ExceptionHandling> - <PrecompiledHeader> - </PrecompiledHeader> - </ClCompile> - <Link> - <OutputFile>..\..\..\..\..\addons\library.xbmc.pvr\$(ProjectName).dll</OutputFile> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\kodi-addon-dev-kit\include;..\..\..\..\..\xbmc\cores\VideoPlayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling>Sync</ExceptionHandling> - <PrecompiledHeader> - </PrecompiledHeader> - </ClCompile> - <Link> - <OutputFile>..\..\..\..\..\addons\library.xbmc.pvr\$(ProjectName).dll</OutputFile> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\libXBMC_pvr.cpp" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj.filters b/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj.filters deleted file mode 100644 index db93c59c90..0000000000 --- a/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\libXBMC_pvr.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/project/cmake/installdata/common/addons.txt b/project/cmake/installdata/common/addons.txt index 72ec5f1fbe..d412490403 100644 --- a/project/cmake/installdata/common/addons.txt +++ b/project/cmake/installdata/common/addons.txt @@ -26,7 +26,6 @@ addons/library.kodi.inputstream/* addons/library.kodi.peripheral/* addons/library.xbmc.addon/* addons/library.xbmc.codec/* -addons/library.xbmc.pvr/* addons/repository.xbmc.org/* addons/webinterface.default/* addons/screensaver.xbmc.builtin.dim/* diff --git a/project/cmake/treedata/common/addons.txt b/project/cmake/treedata/common/addons.txt index 9d76cf375b..1b2c1ea998 100644 --- a/project/cmake/treedata/common/addons.txt +++ b/project/cmake/treedata/common/addons.txt @@ -6,4 +6,3 @@ lib/addons/library.kodi.inputstream KODI_inputstream lib/addons/library.kodi.peripheral KODI_peripheral lib/addons/library.xbmc.addon XBMC_addon lib/addons/library.xbmc.codec XBMC_codec -lib/addons/library.xbmc.pvr XBMC_pvr diff --git a/xbmc/addons/binary/interfaces/AddonInterfaces.cpp b/xbmc/addons/binary/interfaces/AddonInterfaces.cpp index 2809cbb0a4..440fbe87ff 100644 --- a/xbmc/addons/binary/interfaces/AddonInterfaces.cpp +++ b/xbmc/addons/binary/interfaces/AddonInterfaces.cpp @@ -260,7 +260,7 @@ void CAddonInterfaces::CodecLib_UnRegisterMe(void *addonData, void *cbTable) } /*\_____________________________________________________________________________ \*/ -CB_GameLib* CAddonInterfaces::GameLib_RegisterMe(void *addonData) +void* CAddonInterfaces::GameLib_RegisterMe(void *addonData) { CAddonInterfaces* addon = static_cast<CAddonInterfaces*>(addonData); if (addon == nullptr) @@ -273,7 +273,7 @@ CB_GameLib* CAddonInterfaces::GameLib_RegisterMe(void *addonData) return static_cast<V1::KodiAPI::Game::CAddonCallbacksGame*>(addon->m_helperGame)->GetCallbacks(); } -void CAddonInterfaces::GameLib_UnRegisterMe(void *addonData, CB_GameLib *cbTable) +void CAddonInterfaces::GameLib_UnRegisterMe(void *addonData, void *cbTable) { CAddonInterfaces* addon = static_cast<CAddonInterfaces*>(addonData); if (addon == nullptr) @@ -314,7 +314,7 @@ void CAddonInterfaces::INPUTSTREAMLib_UnRegisterMe(void *addonData, void* cbTabl } /*\_____________________________________________________________________________ \*/ -CB_PeripheralLib* CAddonInterfaces::PeripheralLib_RegisterMe(void *addonData) +void* CAddonInterfaces::PeripheralLib_RegisterMe(void *addonData) { CAddonInterfaces* addon = static_cast<CAddonInterfaces*>(addonData); if (addon == nullptr) @@ -327,7 +327,7 @@ CB_PeripheralLib* CAddonInterfaces::PeripheralLib_RegisterMe(void *addonData) return static_cast<V1::KodiAPI::Peripheral::CAddonCallbacksPeripheral*>(addon->m_helperPeripheral)->GetCallbacks(); } -void CAddonInterfaces::PeripheralLib_UnRegisterMe(void *addonData, CB_PeripheralLib* cbTable) +void CAddonInterfaces::PeripheralLib_UnRegisterMe(void *addonData, void* cbTable) { CAddonInterfaces* addon = static_cast<CAddonInterfaces*>(addonData); if (addon == nullptr) diff --git a/xbmc/addons/binary/interfaces/AddonInterfaces.h b/xbmc/addons/binary/interfaces/AddonInterfaces.h index 3c7c56e5a4..c623cc89ad 100644 --- a/xbmc/addons/binary/interfaces/AddonInterfaces.h +++ b/xbmc/addons/binary/interfaces/AddonInterfaces.h @@ -23,6 +23,7 @@ #include "IAddonInterface.h" #include "addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_callbacks.h" #include "addons/kodi-addon-dev-kit/include/kodi/kodi_game_callbacks.h" +#include "addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h" #include <stdint.h> @@ -34,50 +35,6 @@ namespace MESSAGING } } -typedef void* (*KODIAddOnLib_RegisterMe)(void *addonData); -typedef void (*KODIAddOnLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODIAudioEngineLib_RegisterMe)(void *addonData); -typedef void (*KODIAudioEngineLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODIGUILib_RegisterMe)(void *addonData); -typedef void (*KODIGUILib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODIPVRLib_RegisterMe)(void *addonData); -typedef void (*KODIPVRLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODIADSPLib_RegisterMe)(void *addonData); -typedef void (*KODIADSPLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODICodecLib_RegisterMe)(void *addonData); -typedef void (*KODICodecLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef void* (*KODIINPUTSTREAMLib_RegisterMe)(void *addonData); -typedef void (*KODIINPUTSTREAMLib_UnRegisterMe)(void *addonData, void *cbTable); -typedef CB_PeripheralLib* (*KODIPeripheralLib_RegisterMe)(void *addonData); -typedef void (*KODIPeripheralLib_UnRegisterMe)(void *addonData, CB_PeripheralLib *cbTable); -typedef CB_GameLib* (*KODIGameLib_RegisterMe)(void *addonData); -typedef void (*KODIGameLib_UnRegisterMe)(void *addonData, CB_GameLib *cbTable); - -typedef struct AddonCB -{ - const char* libBasePath; ///< Never, never change this!!! - void* addonData; - KODIAddOnLib_RegisterMe AddOnLib_RegisterMe; - KODIAddOnLib_UnRegisterMe AddOnLib_UnRegisterMe; - KODIAudioEngineLib_RegisterMe AudioEngineLib_RegisterMe; - KODIAudioEngineLib_UnRegisterMe AudioEngineLib_UnRegisterMe; - KODICodecLib_RegisterMe CodecLib_RegisterMe; - KODICodecLib_UnRegisterMe CodecLib_UnRegisterMe; - KODIGUILib_RegisterMe GUILib_RegisterMe; - KODIGUILib_UnRegisterMe GUILib_UnRegisterMe; - KODIPVRLib_RegisterMe PVRLib_RegisterMe; - KODIPVRLib_UnRegisterMe PVRLib_UnRegisterMe; - KODIADSPLib_RegisterMe ADSPLib_RegisterMe; - KODIADSPLib_UnRegisterMe ADSPLib_UnRegisterMe; - KODIINPUTSTREAMLib_RegisterMe INPUTSTREAMLib_RegisterMe; - KODIINPUTSTREAMLib_UnRegisterMe INPUTSTREAMLib_UnRegisterMe; - KODIPeripheralLib_RegisterMe PeripheralLib_RegisterMe; - KODIPeripheralLib_UnRegisterMe PeripheralLib_UnRegisterMe; - KODIGameLib_RegisterMe GameLib_RegisterMe; - KODIGameLib_UnRegisterMe GameLib_UnRegisterMe; -} AddonCB; - - namespace ADDON { @@ -129,13 +86,13 @@ namespace ADDON void* GetHelperInputStream() { return m_helperInputStream; } /*\_________________________________________________________________________ \*/ - static CB_PeripheralLib* PeripheralLib_RegisterMe (void *addonData); - static void PeripheralLib_UnRegisterMe (void *addonData, CB_PeripheralLib* cbTable); + static void* PeripheralLib_RegisterMe (void *addonData); + static void PeripheralLib_UnRegisterMe (void *addonData, void* cbTable); void* GetHelperPeripheral() { return m_helperPeripheral; } /*\_________________________________________________________________________ \*/ - static CB_GameLib* GameLib_RegisterMe (void *addonData); - static void GameLib_UnRegisterMe (void *addonData, CB_GameLib* cbTable); + static void* GameLib_RegisterMe (void *addonData); + static void GameLib_UnRegisterMe (void *addonData, void* cbTable); void* GetHelperGame() { return m_helperGame; } /* * API level independent functions for Kodi diff --git a/xbmc/addons/binary/interfaces/api1/PVR/AddonCallbacksPVR.h b/xbmc/addons/binary/interfaces/api1/PVR/AddonCallbacksPVR.h index 9c8c3c1205..fa9abc2c74 100644 --- a/xbmc/addons/binary/interfaces/api1/PVR/AddonCallbacksPVR.h +++ b/xbmc/addons/binary/interfaces/api1/PVR/AddonCallbacksPVR.h @@ -23,6 +23,7 @@ #include "addons/binary/interfaces/AddonInterfaces.h" #include "addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h" #include "addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h" +#include "addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h" namespace PVR { @@ -41,48 +42,6 @@ namespace KodiAPI namespace PVR { -typedef void (*PVRTransferEpgEntry)(void *userData, const ADDON_HANDLE handle, const EPG_TAG *epgentry); -typedef void (*PVRTransferChannelEntry)(void *userData, const ADDON_HANDLE handle, const PVR_CHANNEL *chan); -typedef void (*PVRTransferTimerEntry)(void *userData, const ADDON_HANDLE handle, const PVR_TIMER *timer); -typedef void (*PVRTransferRecordingEntry)(void *userData, const ADDON_HANDLE handle, const PVR_RECORDING *recording); -typedef void (*PVRAddMenuHook)(void *addonData, PVR_MENUHOOK *hook); -typedef void (*PVRRecording)(void *addonData, const char *Name, const char *FileName, bool On); -typedef void (*PVRTriggerChannelUpdate)(void *addonData); -typedef void (*PVRTriggerTimerUpdate)(void *addonData); -typedef void (*PVRTriggerRecordingUpdate)(void *addonData); -typedef void (*PVRTriggerChannelGroupsUpdate)(void *addonData); -typedef void (*PVRTriggerEpgUpdate)(void *addonData, unsigned int iChannelUid); - -typedef void (*PVRTransferChannelGroup)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group); -typedef void (*PVRTransferChannelGroupMember)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member); - -typedef void (*PVRFreeDemuxPacket)(void *addonData, DemuxPacket* pPacket); -typedef DemuxPacket* (*PVRAllocateDemuxPacket)(void *addonData, int iDataSize); - -typedef void (*PVRConnectionStateChange)(void* addonData, const char* strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage); -typedef void (*PVREpgEventStateChange)(void* addonData, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState); - -typedef struct CB_PVRLib -{ - PVRTransferEpgEntry TransferEpgEntry; - PVRTransferChannelEntry TransferChannelEntry; - PVRTransferTimerEntry TransferTimerEntry; - PVRTransferRecordingEntry TransferRecordingEntry; - PVRAddMenuHook AddMenuHook; - PVRRecording Recording; - PVRTriggerChannelUpdate TriggerChannelUpdate; - PVRTriggerTimerUpdate TriggerTimerUpdate; - PVRTriggerRecordingUpdate TriggerRecordingUpdate; - PVRTriggerChannelGroupsUpdate TriggerChannelGroupsUpdate; - PVRTriggerEpgUpdate TriggerEpgUpdate; - PVRFreeDemuxPacket FreeDemuxPacket; - PVRAllocateDemuxPacket AllocateDemuxPacket; - PVRTransferChannelGroup TransferChannelGroup; - PVRTransferChannelGroupMember TransferChannelGroupMember; - PVRConnectionStateChange ConnectionStateChange; - PVREpgEventStateChange EpgEventStateChange; -} CB_PVRLib; - struct EpgEventStateChange; /*! diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h index 70bd19bc64..d9f72c1303 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h @@ -116,6 +116,49 @@ typedef intptr_t ssize_t; /* current addon API version */ #define KODI_ADDON_API_VERSION "1.0.0" +typedef void* (*KODIAddOnLib_RegisterMe)(void *addonData); +typedef void (*KODIAddOnLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIAudioEngineLib_RegisterMe)(void *addonData); +typedef void (*KODIAudioEngineLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIGUILib_RegisterMe)(void *addonData); +typedef void (*KODIGUILib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIPVRLib_RegisterMe)(void *addonData); +typedef void (*KODIPVRLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIADSPLib_RegisterMe)(void *addonData); +typedef void (*KODIADSPLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODICodecLib_RegisterMe)(void *addonData); +typedef void (*KODICodecLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIINPUTSTREAMLib_RegisterMe)(void *addonData); +typedef void (*KODIINPUTSTREAMLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIPeripheralLib_RegisterMe)(void *addonData); +typedef void (*KODIPeripheralLib_UnRegisterMe)(void *addonData, void *cbTable); +typedef void* (*KODIGameLib_RegisterMe)(void *addonData); +typedef void (*KODIGameLib_UnRegisterMe)(void *addonData, void *cbTable); + +typedef struct AddonCB +{ + const char* libBasePath; ///< Never, never change this!!! + void* addonData; + KODIAddOnLib_RegisterMe AddOnLib_RegisterMe; + KODIAddOnLib_UnRegisterMe AddOnLib_UnRegisterMe; + KODIAudioEngineLib_RegisterMe AudioEngineLib_RegisterMe; + KODIAudioEngineLib_UnRegisterMe AudioEngineLib_UnRegisterMe; + KODICodecLib_RegisterMe CodecLib_RegisterMe; + KODICodecLib_UnRegisterMe CodecLib_UnRegisterMe; + KODIGUILib_RegisterMe GUILib_RegisterMe; + KODIGUILib_UnRegisterMe GUILib_UnRegisterMe; + KODIPVRLib_RegisterMe PVRLib_RegisterMe; + KODIPVRLib_UnRegisterMe PVRLib_UnRegisterMe; + KODIADSPLib_RegisterMe ADSPLib_RegisterMe; + KODIADSPLib_UnRegisterMe ADSPLib_UnRegisterMe; + KODIINPUTSTREAMLib_RegisterMe INPUTSTREAMLib_RegisterMe; + KODIINPUTSTREAMLib_UnRegisterMe INPUTSTREAMLib_UnRegisterMe; + KODIPeripheralLib_RegisterMe PeripheralLib_RegisterMe; + KODIPeripheralLib_UnRegisterMe PeripheralLib_UnRegisterMe; + KODIGameLib_RegisterMe GameLib_RegisterMe; + KODIGameLib_UnRegisterMe GameLib_UnRegisterMe; +} AddonCB; + namespace ADDON { typedef enum addon_log diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h index a76932834a..f2c31171b3 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h @@ -27,29 +27,78 @@ #include "xbmc_pvr_types.h" #include "libXBMC_addon.h" -#define PVR_HELPER_DLL_NAME XBMC_DLL_NAME("pvr") -#define PVR_HELPER_DLL XBMC_DLL("pvr") - #define DVD_TIME_BASE 1000000 //! @todo original definition is in DVDClock.h #define DVD_NOPTS_VALUE 0xFFF0000000000000 +namespace V1 +{ +namespace KodiAPI +{ +namespace PVR +{ + +typedef void (*PVRTransferEpgEntry)(void *userData, const ADDON_HANDLE handle, const EPG_TAG *epgentry); +typedef void (*PVRTransferChannelEntry)(void *userData, const ADDON_HANDLE handle, const PVR_CHANNEL *chan); +typedef void (*PVRTransferTimerEntry)(void *userData, const ADDON_HANDLE handle, const PVR_TIMER *timer); +typedef void (*PVRTransferRecordingEntry)(void *userData, const ADDON_HANDLE handle, const PVR_RECORDING *recording); +typedef void (*PVRAddMenuHook)(void *addonData, PVR_MENUHOOK *hook); +typedef void (*PVRRecording)(void *addonData, const char *Name, const char *FileName, bool On); +typedef void (*PVRTriggerChannelUpdate)(void *addonData); +typedef void (*PVRTriggerTimerUpdate)(void *addonData); +typedef void (*PVRTriggerRecordingUpdate)(void *addonData); +typedef void (*PVRTriggerChannelGroupsUpdate)(void *addonData); +typedef void (*PVRTriggerEpgUpdate)(void *addonData, unsigned int iChannelUid); + +typedef void (*PVRTransferChannelGroup)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group); +typedef void (*PVRTransferChannelGroupMember)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member); + +typedef void (*PVRFreeDemuxPacket)(void *addonData, DemuxPacket* pPacket); +typedef DemuxPacket* (*PVRAllocateDemuxPacket)(void *addonData, int iDataSize); + +typedef void (*PVRConnectionStateChange)(void* addonData, const char* strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage); +typedef void (*PVREpgEventStateChange)(void* addonData, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState); + +typedef struct CB_PVRLib +{ + PVRTransferEpgEntry TransferEpgEntry; + PVRTransferChannelEntry TransferChannelEntry; + PVRTransferTimerEntry TransferTimerEntry; + PVRTransferRecordingEntry TransferRecordingEntry; + PVRAddMenuHook AddMenuHook; + PVRRecording Recording; + PVRTriggerChannelUpdate TriggerChannelUpdate; + PVRTriggerTimerUpdate TriggerTimerUpdate; + PVRTriggerRecordingUpdate TriggerRecordingUpdate; + PVRTriggerChannelGroupsUpdate TriggerChannelGroupsUpdate; + PVRTriggerEpgUpdate TriggerEpgUpdate; + PVRFreeDemuxPacket FreeDemuxPacket; + PVRAllocateDemuxPacket AllocateDemuxPacket; + PVRTransferChannelGroup TransferChannelGroup; + PVRTransferChannelGroupMember TransferChannelGroupMember; + PVRConnectionStateChange ConnectionStateChange; + PVREpgEventStateChange EpgEventStateChange; +} CB_PVRLib; + +} /* namespace PVR */ +} /* namespace PVRLIB */ +} /* namespace V1 */ + class CHelper_libXBMC_pvr { public: CHelper_libXBMC_pvr(void) { - m_libXBMC_pvr = NULL; - m_Handle = NULL; + m_Handle = nullptr; + m_Callbacks = nullptr; } ~CHelper_libXBMC_pvr(void) { - if (m_libXBMC_pvr) + if (m_Handle && m_Callbacks) { - PVR_unregister_me(m_Handle, m_Callbacks); - dlclose(m_libXBMC_pvr); + m_Handle->PVRLib_UnRegisterMe(m_Handle->addonData, m_Callbacks); } } @@ -60,98 +109,12 @@ public: */ bool RegisterMe(void* handle) { - m_Handle = handle; - - std::string libBasePath; - libBasePath = ((cb_array*)m_Handle)->libPath; - libBasePath += PVR_HELPER_DLL; - - m_libXBMC_pvr = dlopen(libBasePath.c_str(), RTLD_LAZY); - if (m_libXBMC_pvr == NULL) - { - fprintf(stderr, "Unable to load %s\n", dlerror()); - return false; - } - - PVR_register_me = (void* (*)(void *HANDLE)) - dlsym(m_libXBMC_pvr, "PVR_register_me"); - if (PVR_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_unregister_me = (void (*)(void* HANDLE, void* CB)) - dlsym(m_libXBMC_pvr, "PVR_unregister_me"); - if (PVR_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_epg_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const EPG_TAG *epgentry)) - dlsym(m_libXBMC_pvr, "PVR_transfer_epg_entry"); - if (PVR_transfer_epg_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_channel_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL *chan)) - dlsym(m_libXBMC_pvr, "PVR_transfer_channel_entry"); - if (PVR_transfer_channel_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_timer_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_TIMER *timer)) - dlsym(m_libXBMC_pvr, "PVR_transfer_timer_entry"); - if (PVR_transfer_timer_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_recording_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_RECORDING *recording)) - dlsym(m_libXBMC_pvr, "PVR_transfer_recording_entry"); - if (PVR_transfer_recording_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_add_menu_hook = (void (*)(void* HANDLE, void* CB, PVR_MENUHOOK *hook)) - dlsym(m_libXBMC_pvr, "PVR_add_menu_hook"); - if (PVR_add_menu_hook == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_recording = (void (*)(void* HANDLE, void* CB, const char *Name, const char *FileName, bool On)) - dlsym(m_libXBMC_pvr, "PVR_recording"); - if (PVR_recording == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_trigger_timer_update = (void (*)(void* HANDLE, void* CB)) - dlsym(m_libXBMC_pvr, "PVR_trigger_timer_update"); - if (PVR_trigger_timer_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_trigger_recording_update = (void (*)(void* HANDLE, void* CB)) - dlsym(m_libXBMC_pvr, "PVR_trigger_recording_update"); - if (PVR_trigger_recording_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_trigger_channel_update = (void (*)(void* HANDLE, void* CB)) - dlsym(m_libXBMC_pvr, "PVR_trigger_channel_update"); - if (PVR_trigger_channel_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_trigger_channel_groups_update = (void (*)(void* HANDLE, void* CB)) - dlsym(m_libXBMC_pvr, "PVR_trigger_channel_groups_update"); - if (PVR_trigger_channel_groups_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_trigger_epg_update = (void (*)(void* HANDLE, void* CB, unsigned int iChannelUid)) - dlsym(m_libXBMC_pvr, "PVR_trigger_epg_update"); - if (PVR_trigger_epg_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_channel_group = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group)) - dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group"); - if (PVR_transfer_channel_group == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_transfer_channel_group_member = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member)) - dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group_member"); - if (PVR_transfer_channel_group_member == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - -#ifdef USE_DEMUX - PVR_free_demux_packet = (void (*)(void* HANDLE, void* CB, DemuxPacket* pPacket)) - dlsym(m_libXBMC_pvr, "PVR_free_demux_packet"); - if (PVR_free_demux_packet == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_allocate_demux_packet = (DemuxPacket* (*)(void* HANDLE, void* CB, int iDataSize)) - dlsym(m_libXBMC_pvr, "PVR_allocate_demux_packet"); - if (PVR_allocate_demux_packet == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } -#endif - - PVR_connection_state_change = (void (*)(void* HANDLE, void* CB, const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage)) - dlsym(m_libXBMC_pvr, "PVR_connection_state_change"); - if (PVR_connection_state_change == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - PVR_epg_event_state_change = (void (*)(void* HANDLE, void* CB, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState)) - dlsym(m_libXBMC_pvr, "PVR_epg_event_state_change"); - if (PVR_epg_event_state_change == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } - - m_Callbacks = PVR_register_me(m_Handle); + m_Handle = static_cast<AddonCB*>(handle); + if (m_Handle) + m_Callbacks = (V1::KodiAPI::PVR::CB_PVRLib*)m_Handle->PVRLib_RegisterMe(m_Handle->addonData); + if (!m_Callbacks) + fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me can't get callback table from Kodi !!!\n"); + return m_Callbacks != NULL; } @@ -162,7 +125,7 @@ public: */ void TransferEpgEntry(const ADDON_HANDLE handle, const EPG_TAG* entry) { - return PVR_transfer_epg_entry(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferEpgEntry(m_Handle->addonData, handle, entry); } /*! @@ -172,7 +135,7 @@ public: */ void TransferChannelEntry(const ADDON_HANDLE handle, const PVR_CHANNEL* entry) { - return PVR_transfer_channel_entry(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferChannelEntry(m_Handle->addonData, handle, entry); } /*! @@ -182,7 +145,7 @@ public: */ void TransferTimerEntry(const ADDON_HANDLE handle, const PVR_TIMER* entry) { - return PVR_transfer_timer_entry(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferTimerEntry(m_Handle->addonData, handle, entry); } /*! @@ -192,7 +155,7 @@ public: */ void TransferRecordingEntry(const ADDON_HANDLE handle, const PVR_RECORDING* entry) { - return PVR_transfer_recording_entry(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferRecordingEntry(m_Handle->addonData, handle, entry); } /*! @@ -202,7 +165,7 @@ public: */ void TransferChannelGroup(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP* entry) { - return PVR_transfer_channel_group(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferChannelGroup(m_Handle->addonData, handle, entry); } /*! @@ -212,7 +175,7 @@ public: */ void TransferChannelGroupMember(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER* entry) { - return PVR_transfer_channel_group_member(m_Handle, m_Callbacks, handle, entry); + return m_Callbacks->TransferChannelGroupMember(m_Handle->addonData, handle, entry); } /*! @@ -221,7 +184,7 @@ public: */ void AddMenuHook(PVR_MENUHOOK* hook) { - return PVR_add_menu_hook(m_Handle, m_Callbacks, hook); + return m_Callbacks->AddMenuHook(m_Handle->addonData, hook); } /*! @@ -232,7 +195,7 @@ public: */ void Recording(const char* strRecordingName, const char* strFileName, bool bOn) { - return PVR_recording(m_Handle, m_Callbacks, strRecordingName, strFileName, bOn); + return m_Callbacks->Recording(m_Handle->addonData, strRecordingName, strFileName, bOn); } /*! @@ -240,7 +203,7 @@ public: */ void TriggerTimerUpdate(void) { - return PVR_trigger_timer_update(m_Handle, m_Callbacks); + return m_Callbacks->TriggerTimerUpdate(m_Handle->addonData); } /*! @@ -248,7 +211,7 @@ public: */ void TriggerRecordingUpdate(void) { - return PVR_trigger_recording_update(m_Handle, m_Callbacks); + return m_Callbacks->TriggerRecordingUpdate(m_Handle->addonData); } /*! @@ -256,7 +219,7 @@ public: */ void TriggerChannelUpdate(void) { - return PVR_trigger_channel_update(m_Handle, m_Callbacks); + return m_Callbacks->TriggerChannelUpdate(m_Handle->addonData); } /*! @@ -265,7 +228,7 @@ public: */ void TriggerEpgUpdate(unsigned int iChannelUid) { - return PVR_trigger_epg_update(m_Handle, m_Callbacks, iChannelUid); + return m_Callbacks->TriggerEpgUpdate(m_Handle->addonData, iChannelUid); } /*! @@ -273,7 +236,7 @@ public: */ void TriggerChannelGroupsUpdate(void) { - return PVR_trigger_channel_groups_update(m_Handle, m_Callbacks); + return m_Callbacks->TriggerChannelGroupsUpdate(m_Handle->addonData); } #ifdef USE_DEMUX @@ -283,7 +246,7 @@ public: */ void FreeDemuxPacket(DemuxPacket* pPacket) { - return PVR_free_demux_packet(m_Handle, m_Callbacks, pPacket); + return m_Callbacks->FreeDemuxPacket(m_Handle->addonData, pPacket); } /*! @@ -293,7 +256,7 @@ public: */ DemuxPacket* AllocateDemuxPacket(int iDataSize) { - return PVR_allocate_demux_packet(m_Handle, m_Callbacks, iDataSize); + return m_Callbacks->AllocateDemuxPacket(m_Handle->addonData, iDataSize); } #endif @@ -306,7 +269,7 @@ public: */ void ConnectionStateChange(const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage) { - return PVR_connection_state_change(m_Handle, m_Callbacks, strConnectionString, newState, strMessage); + return m_Callbacks->ConnectionStateChange(m_Handle->addonData, strConnectionString, newState, strMessage); } /*! @@ -318,38 +281,10 @@ public: */ void EpgEventStateChange(EPG_TAG *tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState) { - return PVR_epg_event_state_change(m_Handle, m_Callbacks, tag, iUniqueChannelId, newState); + return m_Callbacks->EpgEventStateChange(m_Handle->addonData, tag, iUniqueChannelId, newState); } -protected: - void* (*PVR_register_me)(void*); - void (*PVR_unregister_me)(void*, void*); - void (*PVR_transfer_epg_entry)(void*, void*, const ADDON_HANDLE, const EPG_TAG*); - void (*PVR_transfer_channel_entry)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL*); - void (*PVR_transfer_timer_entry)(void*, void*, const ADDON_HANDLE, const PVR_TIMER*); - void (*PVR_transfer_recording_entry)(void*, void*, const ADDON_HANDLE, const PVR_RECORDING*); - void (*PVR_add_menu_hook)(void*, void*, PVR_MENUHOOK*); - void (*PVR_recording)(void*, void*, const char*, const char*, bool); - void (*PVR_trigger_channel_update)(void*, void*); - void (*PVR_trigger_channel_groups_update)(void*, void*); - void (*PVR_trigger_timer_update)(void*, void*); - void (*PVR_trigger_recording_update)(void* , void*); - void (*PVR_trigger_epg_update)(void*, void*, unsigned int); - void (*PVR_transfer_channel_group)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL_GROUP*); - void (*PVR_transfer_channel_group_member)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL_GROUP_MEMBER*); -#ifdef USE_DEMUX - void (*PVR_free_demux_packet)(void*, void*, DemuxPacket*); - DemuxPacket* (*PVR_allocate_demux_packet)(void*, void*, int); -#endif - void (*PVR_connection_state_change)(void*, void*, const char*, PVR_CONNECTION_STATE, const char*); - void (*PVR_epg_event_state_change)(void*, void*, EPG_TAG*, unsigned int, EPG_EVENT_STATE); - private: - void* m_libXBMC_pvr; - void* m_Handle; - void* m_Callbacks; - struct cb_array - { - const char* libPath; - }; + AddonCB* m_Handle; + V1::KodiAPI::PVR::CB_PVRLib *m_Callbacks; }; |