summaryrefslogtreecommitdiff
path: root/media
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2013-04-27 09:42:33 +0200
committermethodus <methodus@web.de>2013-04-27 09:42:33 +0200
commite0813ab8cfdee367ab6138c0227205274c76ffe1 (patch)
treea7b247527185aa7ca324aa970001e59bc0c4d430 /media
parentbcc8e557adb68576c44fd07ce19a9d3d96786af3 (diff)
downloadvdr-plugin-upnp-e0813ab8cfdee367ab6138c0227205274c76ffe1.tar.gz
vdr-plugin-upnp-e0813ab8cfdee367ab6138c0227205274c76ffe1.tar.bz2
Possible fix for high CPU load when refreshing EPG
Diffstat (limited to 'media')
-rw-r--r--media/mediaManager.cpp19
-rw-r--r--media/pluginManager.cpp2
2 files changed, 11 insertions, 10 deletions
diff --git a/media/mediaManager.cpp b/media/mediaManager.cpp
index 199a942..c1b84a3 100644
--- a/media/mediaManager.cpp
+++ b/media/mediaManager.cpp
@@ -133,7 +133,7 @@ IdList cMediaManager::GetContainerUpdateIDs(bool unevented){
return list;
}
-void cMediaManager::OnContainerUpdate(const string& uri, long updateID, const string& target){
+void cMediaManager::OnContainerUpdate(const string& uri, long updateID, const StringList& target){
systemUpdateID = time(NULL);
string objectID = tools::GenerateUUIDFromURL(uri);
@@ -144,16 +144,17 @@ void cMediaManager::OnContainerUpdate(const string& uri, long updateID, const st
// does not exist. Therefore, we cannot scan this directory successfully.
if(!UpdateContainerUpdateId(objectID, updateID)) return;
- stringstream ss;
-
- ss << uri;
-
- if(!target.empty()){
- ss << target;
+ if(target.empty()){
+ scanTargets.push_back(uri);
+ } else {
+ stringstream ss;
+ for(StringList::const_iterator it = target.begin(); it != target.end(); ++it){
+ ss.str();
+ ss << uri << *it;
+ scanTargets.push_back(ss.str());
+ }
}
- scanTargets.push_back(ss.str());
-
// Start scanning for changed files.
Start();
}
diff --git a/media/pluginManager.cpp b/media/pluginManager.cpp
index 32a2436..a17e9c9 100644
--- a/media/pluginManager.cpp
+++ b/media/pluginManager.cpp
@@ -310,7 +310,7 @@ bool cUPnPResourceProvider::Seek(size_t offset, int origin){
void cUPnPResourceProvider::Close(){
}
-void cUPnPResourceProvider::OnContainerUpdate(const string& uri, long int cUID, const string& target){
+void cUPnPResourceProvider::OnContainerUpdate(const string& uri, long int cUID, const StringList& target){
cMediaServer::GetInstance()->GetManager().OnContainerUpdate(uri, cUID, target);
}