2 * Copyright (C) 2012-2013 Team XBMC
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
22 #include "AddonCallbacks.h"
23 #include "AddonCallbacksAddon.h"
24 #include "AddonCallbacksCodec.h"
25 #include "AddonCallbacksGUI.h"
26 #include "AddonCallbacksPVR.h"
27 #include "filesystem/SpecialProtocol.h"
28 #include "utils/log.h"
33 CAddonCallbacks::CAddonCallbacks(CAddon* addon)
36 m_callbacks = new AddonCB;
42 m_callbacks->libBasePath = strdup(CSpecialProtocol::TranslatePath("special://xbmcbin/addons"));
43 m_callbacks->addonData = this;
44 m_callbacks->AddOnLib_RegisterMe = CAddonCallbacks::AddOnLib_RegisterMe;
45 m_callbacks->AddOnLib_UnRegisterMe = CAddonCallbacks::AddOnLib_UnRegisterMe;
46 m_callbacks->CODECLib_RegisterMe = CAddonCallbacks::CODECLib_RegisterMe;
47 m_callbacks->CODECLib_UnRegisterMe = CAddonCallbacks::CODECLib_UnRegisterMe;
48 m_callbacks->GUILib_RegisterMe = CAddonCallbacks::GUILib_RegisterMe;
49 m_callbacks->GUILib_UnRegisterMe = CAddonCallbacks::GUILib_UnRegisterMe;
50 m_callbacks->PVRLib_RegisterMe = CAddonCallbacks::PVRLib_RegisterMe;
51 m_callbacks->PVRLib_UnRegisterMe = CAddonCallbacks::PVRLib_UnRegisterMe;
54 CAddonCallbacks::~CAddonCallbacks()
64 free((char*)m_callbacks->libBasePath);
69 CB_AddOnLib* CAddonCallbacks::AddOnLib_RegisterMe(void *addonData)
71 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
74 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
78 addon->m_helperAddon = new CAddonCallbacksAddon(addon->m_addon);
79 return addon->m_helperAddon->GetCallbacks();
82 void CAddonCallbacks::AddOnLib_UnRegisterMe(void *addonData, CB_AddOnLib *cbTable)
84 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
87 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
91 delete addon->m_helperAddon;
92 addon->m_helperAddon = NULL;
95 CB_CODECLib* CAddonCallbacks::CODECLib_RegisterMe(void *addonData)
97 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
100 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
104 addon->m_helperCODEC = new CAddonCallbacksCodec(addon->m_addon);
105 return addon->m_helperCODEC->GetCallbacks();
108 void CAddonCallbacks::CODECLib_UnRegisterMe(void *addonData, CB_CODECLib *cbTable)
110 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
113 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
117 delete addon->m_helperCODEC;
118 addon->m_helperCODEC = NULL;
121 CB_GUILib* CAddonCallbacks::GUILib_RegisterMe(void *addonData)
123 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
126 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
130 addon->m_helperGUI = new CAddonCallbacksGUI(addon->m_addon);
131 return addon->m_helperGUI->GetCallbacks();
134 void CAddonCallbacks::GUILib_UnRegisterMe(void *addonData, CB_GUILib *cbTable)
136 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
139 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
143 delete addon->m_helperGUI;
144 addon->m_helperGUI = NULL;
147 CB_PVRLib* CAddonCallbacks::PVRLib_RegisterMe(void *addonData)
149 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
152 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
156 addon->m_helperPVR = new CAddonCallbacksPVR(addon->m_addon);
157 return addon->m_helperPVR->GetCallbacks();
160 void CAddonCallbacks::PVRLib_UnRegisterMe(void *addonData, CB_PVRLib *cbTable)
162 CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
165 CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
169 delete addon->m_helperPVR;
170 addon->m_helperPVR = NULL;
173 }; /* namespace ADDON */