[bluray] Fix stream info/language retrieval for blurays in non-nav mode.
[vuplus_xbmc] / xbmc / addons / AddonCallbacks.cpp
1 /*
2  *      Copyright (C) 2012-2013 Team XBMC
3  *      http://www.xbmc.org
4  *
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)
8  *  any later version.
9  *
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.
14  *
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/>.
18  *
19  */
20
21 #include "Addon.h"
22 #include "AddonCallbacks.h"
23 #include "AddonCallbacksAddon.h"
24 #include "AddonCallbacksGUI.h"
25 #include "AddonCallbacksPVR.h"
26 #include "filesystem/SpecialProtocol.h"
27 #include "utils/log.h"
28
29 namespace ADDON
30 {
31
32 CAddonCallbacks::CAddonCallbacks(CAddon* addon)
33 {
34   m_addon       = addon;
35   m_callbacks   = new AddonCB;
36   m_helperAddon = NULL;
37   m_helperGUI   = NULL;
38   m_helperPVR   = NULL;
39
40   m_callbacks->libBasePath           = strdup(CSpecialProtocol::TranslatePath("special://xbmcbin/addons"));
41   m_callbacks->addonData             = this;
42   m_callbacks->AddOnLib_RegisterMe   = CAddonCallbacks::AddOnLib_RegisterMe;
43   m_callbacks->AddOnLib_UnRegisterMe = CAddonCallbacks::AddOnLib_UnRegisterMe;
44   m_callbacks->GUILib_RegisterMe     = CAddonCallbacks::GUILib_RegisterMe;
45   m_callbacks->GUILib_UnRegisterMe   = CAddonCallbacks::GUILib_UnRegisterMe;
46   m_callbacks->PVRLib_RegisterMe     = CAddonCallbacks::PVRLib_RegisterMe;
47   m_callbacks->PVRLib_UnRegisterMe   = CAddonCallbacks::PVRLib_UnRegisterMe;
48 }
49
50 CAddonCallbacks::~CAddonCallbacks()
51 {
52   delete m_helperAddon;
53   m_helperAddon = NULL;
54   delete m_helperGUI;
55   m_helperGUI = NULL;
56   delete m_helperPVR;
57   m_helperPVR = NULL;
58   free((char*)m_callbacks->libBasePath);
59   delete m_callbacks;
60   m_callbacks = NULL;
61 }
62
63 CB_AddOnLib* CAddonCallbacks::AddOnLib_RegisterMe(void *addonData)
64 {
65   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
66   if (addon == NULL)
67   {
68     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
69     return NULL;
70   }
71
72   addon->m_helperAddon = new CAddonCallbacksAddon(addon->m_addon);
73   return addon->m_helperAddon->GetCallbacks();
74 }
75
76 void CAddonCallbacks::AddOnLib_UnRegisterMe(void *addonData, CB_AddOnLib *cbTable)
77 {
78   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
79   if (addon == NULL)
80   {
81     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
82     return;
83   }
84
85   delete addon->m_helperAddon;
86   addon->m_helperAddon = NULL;
87 }
88
89 CB_GUILib* CAddonCallbacks::GUILib_RegisterMe(void *addonData)
90 {
91   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
92   if (addon == NULL)
93   {
94     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
95     return NULL;
96   }
97
98   addon->m_helperGUI = new CAddonCallbacksGUI(addon->m_addon);
99   return addon->m_helperGUI->GetCallbacks();
100 }
101
102 void CAddonCallbacks::GUILib_UnRegisterMe(void *addonData, CB_GUILib *cbTable)
103 {
104   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
105   if (addon == NULL)
106   {
107     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
108     return;
109   }
110
111   delete addon->m_helperGUI;
112   addon->m_helperGUI = NULL;
113 }
114
115 CB_PVRLib* CAddonCallbacks::PVRLib_RegisterMe(void *addonData)
116 {
117   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
118   if (addon == NULL)
119   {
120     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
121     return NULL;
122   }
123
124   addon->m_helperPVR = new CAddonCallbacksPVR(addon->m_addon);
125   return addon->m_helperPVR->GetCallbacks();
126 }
127
128 void CAddonCallbacks::PVRLib_UnRegisterMe(void *addonData, CB_PVRLib *cbTable)
129 {
130   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
131   if (addon == NULL)
132   {
133     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
134     return;
135   }
136
137   delete addon->m_helperPVR;
138   addon->m_helperPVR = NULL;
139 }
140
141 }; /* namespace ADDON */