summaryrefslogtreecommitdiffstats
path: root/lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch')
-rw-r--r--lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch236
1 files changed, 236 insertions, 0 deletions
diff --git a/lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch b/lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch
new file mode 100644
index 0000000..ed099b9
--- /dev/null
+++ b/lib/libUPnP/patches/0030-platinum-implement-GetSortCapabilities-in-media-brow.patch
@@ -0,0 +1,236 @@
+From bf2fe4c362eaec89257d7649f18af2431dcc544a Mon Sep 17 00:00:00 2001
+From: montellese <montellese@xbmc.org>
+Date: Sat, 8 Feb 2014 15:15:32 +0100
+Subject: [PATCH 07/11] platinum: implement GetSortCapabilities in media
+ browser
+
+---
+ .../Source/Devices/MediaServer/PltMediaBrowser.cpp | 58 ++++++++++++++++++++++
+ .../Source/Devices/MediaServer/PltMediaBrowser.h | 14 ++++++
+ .../Devices/MediaServer/PltSyncMediaBrowser.cpp | 55 ++++++++++++++++++++
+ .../Devices/MediaServer/PltSyncMediaBrowser.h | 7 +++
+ 4 files changed, 134 insertions(+)
+
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.cpp b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.cpp
+index 46b6f41..2478441 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.cpp
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.cpp
+@@ -332,6 +332,33 @@ PLT_MediaBrowser::GetSearchCapabilities(PLT_DeviceDataReference& device,
+ }
+
+ /*----------------------------------------------------------------------
++| PLT_MediaBrowser::GetSortCapabilities
+++---------------------------------------------------------------------*/
++NPT_Result
++PLT_MediaBrowser::GetSortCapabilities(PLT_DeviceDataReference& device,
++ void* userdata)
++{
++ // verify device still in our list
++ PLT_DeviceDataReference device_data;
++ NPT_CHECK_WARNING(FindServer(device->GetUUID(), device_data));
++
++ // create action
++ PLT_ActionReference action;
++ NPT_CHECK_SEVERE(m_CtrlPoint->CreateAction(
++ device,
++ "urn:schemas-upnp-org:service:ContentDirectory:1",
++ "GetSortCapabilities",
++ action));
++
++ // invoke the action
++ if (NPT_FAILED(m_CtrlPoint->InvokeAction(action, userdata))) {
++ return NPT_ERROR_INVALID_PARAMETERS;
++ }
++
++ return NPT_SUCCESS;
++}
++
++/*----------------------------------------------------------------------
+ | PLT_MediaBrowser::OnActionResponse
+ +---------------------------------------------------------------------*/
+ NPT_Result
+@@ -351,6 +378,8 @@ PLT_MediaBrowser::OnActionResponse(NPT_Result res,
+ return OnSearchResponse(res, device, action, userdata);
+ } else if (actionName.Compare("GetSearchCapabilities", true) == 0) {
+ return OnGetSearchCapabilitiesResponse(res, device, action, userdata);
++ } else if (actionName.Compare("GetSortCapabilities", true) == 0) {
++ return OnGetSortCapabilitiesResponse(res, device, action, userdata);
+ }
+
+ return NPT_SUCCESS;
+@@ -494,6 +523,35 @@ bad_action:
+ }
+
+ /*----------------------------------------------------------------------
++| PLT_MediaBrowser::OnGetSearchCapabilitiesResponse
+++---------------------------------------------------------------------*/
++NPT_Result
++PLT_MediaBrowser::OnGetSortCapabilitiesResponse(NPT_Result res,
++ PLT_DeviceDataReference& device,
++ PLT_ActionReference& action,
++ void* userdata)
++{
++ NPT_String value;
++
++ if (!m_Delegate) return NPT_SUCCESS;
++
++ if (NPT_FAILED(res) || action->GetErrorCode() != 0) {
++ goto bad_action;
++ }
++
++ if (NPT_FAILED(action->GetArgumentValue("SortCaps", value))) {
++ goto bad_action;
++ }
++
++ m_Delegate->OnGetSortCapabilitiesResult(NPT_SUCCESS, device, value, userdata);
++ return NPT_SUCCESS;
++
++bad_action:
++ m_Delegate->OnGetSortCapabilitiesResult(NPT_FAILURE, device, value, userdata);
++ return NPT_FAILURE;
++}
++
++/*----------------------------------------------------------------------
+ | PLT_MediaBrowser::OnEventNotify
+ +---------------------------------------------------------------------*/
+ NPT_Result
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.h b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.h
+index 023630d..41ed84e 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.h
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaBrowser.h
+@@ -97,6 +97,12 @@ public:
+ PLT_DeviceDataReference& /*device*/,
+ NPT_String /*searchCapabilities*/,
+ void* /*userdata*/) {}
++
++ virtual void OnGetSortCapabilitiesResult(
++ NPT_Result /*res*/,
++ PLT_DeviceDataReference& /*device*/,
++ NPT_String /*sortCapabilities*/,
++ void* /*userdata*/) {}
+ };
+
+ /*----------------------------------------------------------------------
+@@ -133,6 +139,9 @@ public:
+ virtual NPT_Result GetSearchCapabilities(PLT_DeviceDataReference& device,
+ void* userdata = NULL);
+
++ virtual NPT_Result GetSortCapabilities(PLT_DeviceDataReference& device,
++ void* userdata = NULL);
++
+ // methods
+ virtual const NPT_Lock<PLT_DeviceDataReferenceList>& GetMediaServers() { return m_MediaServers; }
+ virtual NPT_Result FindServer(const char* uuid, PLT_DeviceDataReference& device);
+@@ -160,6 +169,11 @@ protected:
+ PLT_DeviceDataReference& device,
+ PLT_ActionReference& action,
+ void* userdata);
++
++ virtual NPT_Result OnGetSortCapabilitiesResponse(NPT_Result res,
++ PLT_DeviceDataReference& device,
++ PLT_ActionReference& action,
++ void* userdata);
+
+ protected:
+ PLT_CtrlPointReference m_CtrlPoint;
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.cpp b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.cpp
+index 8ae9f72..27d81fa 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.cpp
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.cpp
+@@ -191,6 +191,28 @@ PLT_SyncMediaBrowser::OnGetSearchCapabilitiesResult(NPT_Result res
+ }
+
+ /*----------------------------------------------------------------------
++| PLT_SyncMediaBrowser::OnGetSortCapabilitiesResult
+++---------------------------------------------------------------------*/
++void
++PLT_SyncMediaBrowser::OnGetSortCapabilitiesResult(NPT_Result res,
++ PLT_DeviceDataReference& device,
++ NPT_String sortCapabilities,
++ void* userdata)
++{
++ NPT_COMPILER_UNUSED(device);
++
++ if (!userdata) return;
++
++ PLT_CapabilitiesDataReference* data = (PLT_CapabilitiesDataReference*) userdata;
++ (*data)->res = res;
++ if (NPT_SUCCEEDED(res)) {
++ (*data)->capabilities = sortCapabilities;
++ }
++ (*data)->shared_var.SetValue(1);
++ delete data;
++}
++
++/*----------------------------------------------------------------------
+ | PLT_SyncMediaBrowser::OnMSStateVariablesChanged
+ +---------------------------------------------------------------------*/
+ void
+@@ -335,6 +357,39 @@ done:
+ }
+
+ /*----------------------------------------------------------------------
++| PLT_SyncMediaBrowser::GetSortCapabilitiesSync
+++---------------------------------------------------------------------*/
++NPT_Result
++PLT_SyncMediaBrowser::GetSortCapabilitiesSync(PLT_DeviceDataReference& device,
++ NPT_String& sortCapabilities)
++{
++ NPT_Result res;
++
++ PLT_CapabilitiesDataReference capabilities_data(new PLT_CapabilitiesData(), true);
++ capabilities_data->shared_var.SetValue(0);
++
++ // send of the GetSortCapabilities packet. Note that this will
++ // not block. There is a call to WaitForResponse in order
++ // to block until the response comes back.
++ res = PLT_MediaBrowser::GetSortCapabilities(device,
++ new PLT_CapabilitiesDataReference(capabilities_data));
++ NPT_CHECK_SEVERE(res);
++
++ res = WaitForResponse(capabilities_data->shared_var);
++ NPT_CHECK_LABEL_WARNING(res, done);
++
++ if (NPT_FAILED(capabilities_data->res)) {
++ res = capabilities_data->res;
++ NPT_CHECK_LABEL_WARNING(res, done);
++ }
++
++ sortCapabilities = capabilities_data->capabilities;
++
++done:
++ return res;
++}
++
++/*----------------------------------------------------------------------
+ | PLT_SyncMediaBrowser::BrowseSync
+ +---------------------------------------------------------------------*/
+ NPT_Result
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
+index 7054b72..21f1d28 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
+@@ -115,6 +115,10 @@ public:
+ PLT_DeviceDataReference& device,
+ NPT_String searchCapabilities,
+ void* userdata);
++ virtual void OnGetSortCapabilitiesResult(NPT_Result res,
++ PLT_DeviceDataReference& device,
++ NPT_String sortCapabilities,
++ void* userdata);
+
+ // methods
+ void SetContainerListener(PLT_MediaContainerChangesListener* listener) {
+@@ -137,6 +141,9 @@ public:
+ NPT_Result GetSearchCapabilitiesSync(PLT_DeviceDataReference& device,
+ NPT_String& searchCapabilities);
+
++ NPT_Result GetSortCapabilitiesSync(PLT_DeviceDataReference& device,
++ NPT_String& sortCapabilities);
++
+ const NPT_Lock<PLT_DeviceMap>& GetMediaServersMap() const { return m_MediaServers; }
+ bool IsCached(const char* uuid, const char* object_id);
+
+--
+1.7.11.msysgit.0
+