diff options
author | chriszero <zerov83@gmail.com> | 2015-02-13 16:14:10 +0100 |
---|---|---|
committer | chriszero <zerov83@gmail.com> | 2015-02-13 16:14:10 +0100 |
commit | 20fefdd3f341d6e7f6b15e4926bf5569aa1943d5 (patch) | |
tree | ba402770b4912be3d93f6dd8faab521f4b5e4762 | |
parent | b5c156939ddf2fc4ec3fa27ae1c3daae28681c12 (diff) | |
download | vdr-plugin-plex-20fefdd3f341d6e7f6b15e4926bf5569aa1943d5.tar.gz vdr-plugin-plex-20fefdd3f341d6e7f6b15e4926bf5569aa1943d5.tar.bz2 |
Removed some raw pointers to avoid a possible memoryleak
-rw-r--r-- | MediaContainer.cpp | 2 | ||||
-rw-r--r-- | MediaContainer.h | 2 | ||||
-rw-r--r-- | PVideo.cpp | 4 | ||||
-rw-r--r-- | PVideo.h | 5 | ||||
-rw-r--r-- | PlexHTTPRequestHandler.cpp | 11 | ||||
-rw-r--r-- | PlexServer.cpp | 4 | ||||
-rw-r--r-- | PlexServer.h | 2 | ||||
-rw-r--r-- | Plexservice.cpp | 46 | ||||
-rw-r--r-- | Plexservice.h | 2 | ||||
-rw-r--r-- | SubscriptionManager.cpp | 16 | ||||
-rw-r--r-- | SubscriptionManager.h | 6 | ||||
-rw-r--r-- | hlsPlayer.cpp | 45 | ||||
-rw-r--r-- | hlsPlayer.h | 4 | ||||
-rw-r--r-- | hlsPlayerControl.cpp | 21 | ||||
-rw-r--r-- | hlsPlayerControl.h | 7 | ||||
-rw-r--r-- | plex.cpp | 12 | ||||
-rw-r--r-- | plexgdm.cpp | 2 |
17 files changed, 88 insertions, 103 deletions
diff --git a/MediaContainer.cpp b/MediaContainer.cpp index b49dfd7..fa3c24a 100644 --- a/MediaContainer.cpp +++ b/MediaContainer.cpp @@ -2,7 +2,7 @@ namespace plexclient { -MediaContainer::MediaContainer(std::istream* response, PlexServer* Server) +MediaContainer::MediaContainer(std::istream* response, PlexServer Server) { try { InputSource src(*response); diff --git a/MediaContainer.h b/MediaContainer.h index aaf0d9a..e3ad6b7 100644 --- a/MediaContainer.h +++ b/MediaContainer.h @@ -34,7 +34,7 @@ namespace plexclient class MediaContainer: XmlObject { public: - MediaContainer(std::istream *response, PlexServer* Server); + MediaContainer(std::istream *response, PlexServer Server); protected: @@ -3,10 +3,10 @@ namespace plexclient { -Video::Video(Poco::XML::Node* pNode, PlexServer* Server) +Video::Video(Poco::XML::Node* pNode, PlexServer Server) { m_iMyPlayOffset = 0; - m_pServer = Server; + m_Server = Server; NodeIterator it(pNode, Poco::XML::NodeFilter::SHOW_ALL); Poco::XML::Node* pChildNode = it.nextNode(); @@ -33,7 +33,8 @@ namespace plexclient class Video: XmlObject { public: - Video(Poco::XML::Node* pNode, PlexServer* Server); + Video(Poco::XML::Node* pNode, PlexServer Server); + Video() {}; public: int m_iRatingKey; @@ -60,7 +61,7 @@ public: std::vector<std::string> m_vRole; std::string m_sCollection; Media m_Media; - PlexServer* m_pServer; + PlexServer m_Server; int m_iMyPlayOffset; }; diff --git a/PlexHTTPRequestHandler.cpp b/PlexHTTPRequestHandler.cpp index f07bce4..86ac3cd 100644 --- a/PlexHTTPRequestHandler.cpp +++ b/PlexHTTPRequestHandler.cpp @@ -3,6 +3,8 @@ #include <vdr/keys.h> #include <unistd.h> +#include <Poco/SharedPtr.h> + #include "hlsPlayerControl.h" namespace plexclient @@ -224,16 +226,17 @@ void PlayerRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, std::string address = query["address"]; std::string port = query["port"]; std::string key = query["key"]; - + std::string fullUrl = protocol + "://" + address + ":" + port + key; // Metainfo std::cout << fullUrl << std::endl; - MediaContainer* pCont = Plexservice::GetMediaContainer(fullUrl); + MediaContainer Cont = Plexservice::GetMediaContainer(fullUrl); // MUSS im Maintread des Plugins/VDR gestartet werden if(query.find("offset") != query.end()) { - pCont->m_vVideos[0].m_iMyPlayOffset = atoi(query["offset"].c_str()) / 1000; + Cont.m_vVideos[0].m_iMyPlayOffset = atoi(query["offset"].c_str()) / 1000; } - ActionManager::GetInstance().AddAction(&pCont->m_vVideos[0]); // MemoryLeak? + //Poco:: + ActionManager::GetInstance().AddAction(Cont.m_vVideos[0]); } else if(request.getURI().find("/playback/play") != std::string::npos) { cRemote::Put(kPlay); } else if(request.getURI().find("/playback/pause") != std::string::npos) { diff --git a/PlexServer.cpp b/PlexServer.cpp index 5675009..b413d7d 100644 --- a/PlexServer.cpp +++ b/PlexServer.cpp @@ -42,8 +42,4 @@ std::string PlexServer::GetUri() return std::string("http://") + m_sIpAddress + ":" + std::string(itoa(m_nPort)); } -PlexServer::~PlexServer() -{ -} - } diff --git a/PlexServer.h b/PlexServer.h index 19130d7..a3d6ee1 100644 --- a/PlexServer.h +++ b/PlexServer.h @@ -21,7 +21,7 @@ class PlexServer public: PlexServer(std::string data, std::string ip); PlexServer(std::string ip, int port); - ~PlexServer(); + PlexServer() {}; int GetMaster() const { return m_nMaster; diff --git a/Plexservice.cpp b/Plexservice.cpp index c5e028a..776f9fc 100644 --- a/Plexservice.cpp +++ b/Plexservice.cpp @@ -146,7 +146,7 @@ MediaContainer* Plexservice::GetSection(std::string section) dsyslog("[plex] URI: %s[s%]", m_pPlexSession->getHost().c_str(), pRequest->getURI().c_str()); - MediaContainer* pAllsections = new MediaContainer(&rs, this->pServer); + MediaContainer* pAllsections = new MediaContainer(&rs, *pServer); //Poco::StreamCopier::copyStream(rs, std::cout); delete pRequest; return pAllsections; @@ -178,39 +178,35 @@ Poco::Net::HTTPRequest* Plexservice::CreateRequest(std::string path) return pRequest; } -MediaContainer* Plexservice::GetMediaContainer(std::string fullUrl) +MediaContainer Plexservice::GetMediaContainer(std::string fullUrl) { Poco::URI fileuri(fullUrl); - Poco::Net::HTTPRequest* pRequest = new Poco::Net::HTTPRequest(Poco::Net::HTTPRequest::HTTP_GET, - fileuri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1); + Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, fileuri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1); - pRequest->add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"); + request.add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"); //pRequest->add("X-Plex-Client-Capabilities", "protocols=shoutcast,http-video;videoDecoders=h264{profile:high&resolution:1080&level:51};audioDecoders=mp3,aac"); - pRequest->add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); - pRequest->add("X-Plex-Device", "PC"); - pRequest->add("X-Plex-Device-Name", Config::GetInstance().GetHostname()); - pRequest->add("X-Plex-Language", Config::GetInstance().GetLanguage()); - pRequest->add("X-Plex-Model", "Linux"); - pRequest->add("X-Plex-Platform", "VDR"); - pRequest->add("X-Plex-Product", "plex for vdr"); - pRequest->add("X-Plex-Provides", "player"); - pRequest->add("X-Plex-Version", "0.0.1a"); - - Poco::Net::HTTPClientSession* session = new Poco::Net::HTTPClientSession(fileuri.getHost(), fileuri.getPort()); - - session->sendRequest(*pRequest); + request.add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); + request.add("X-Plex-Device", "PC"); + request.add("X-Plex-Device-Name", Config::GetInstance().GetHostname()); + request.add("X-Plex-Language", Config::GetInstance().GetLanguage()); + request.add("X-Plex-Model", "Linux"); + request.add("X-Plex-Platform", "VDR"); + request.add("X-Plex-Product", "plex for vdr"); + request.add("X-Plex-Provides", "player"); + request.add("X-Plex-Version", "0.0.1a"); + + Poco::Net::HTTPClientSession session(fileuri.getHost(), fileuri.getPort()); + + session.sendRequest(request); Poco::Net::HTTPResponse response; - std::istream &rs = session->receiveResponse(response); + std::istream &rs = session.receiveResponse(response); - MediaContainer* pAllsections = new MediaContainer(&rs, new PlexServer(fileuri.getHost(), fileuri.getPort())); - - delete pRequest; - delete session; + MediaContainer allsections(&rs, PlexServer(fileuri.getHost(), fileuri.getPort())); - return pAllsections; + return allsections; } #ifdef CRYPTOPP @@ -298,7 +294,7 @@ std::string Plexservice::encode(std::string message) std::string Plexservice::GetUniversalTranscodeUrl(Video* video, int offset, PlexServer* server) { - PlexServer* pSrv = server ? server : video->m_pServer; + PlexServer* pSrv = server ? server : &video->m_Server; std::stringstream params; params << "/video/:/transcode/universal/start.m3u8?"; params << "path=" << encode(pSrv->GetUri() + video->m_sKey); diff --git a/Plexservice.h b/Plexservice.h index 3daa7cf..02961d3 100644 --- a/Plexservice.h +++ b/Plexservice.h @@ -61,7 +61,7 @@ public: PlexServer* GetServer(); static std::string GetUniversalTranscodeUrl(Video* video, int offset = 0, PlexServer* server = 0); - static MediaContainer* GetMediaContainer(std::string fullUrl); + static MediaContainer GetMediaContainer(std::string fullUrl); static std::string encode(std::string message); private: diff --git a/SubscriptionManager.cpp b/SubscriptionManager.cpp index a6f35c5..d312803 100644 --- a/SubscriptionManager.cpp +++ b/SubscriptionManager.cpp @@ -53,8 +53,8 @@ void SubscriptionManager::NotifyServer() std::string server; int port; if(pVid) { - server = pVid->m_pServer->GetIpAdress(); - port = pVid->m_pServer->GetPort(); + server = pVid->m_Server.GetIpAdress(); + port = pVid->m_Server.GetPort(); } else if ( plexgdm::GetInstance().GetPlexservers().size() > 0) { server = plexgdm::GetInstance().GetPlexservers().at(0).GetIpAdress(); port = plexgdm::GetInstance().GetPlexservers().at(0).GetPort(); @@ -169,10 +169,10 @@ std::string SubscriptionManager::GetTimelineXml() msg << " duration=\"" << total << "\""; msg << " seekRange=\"0-" << total << "\""; msg << " controllable=\"true\""; - msg << " machineIdentifier=\"" << (pVid ? pVid->m_pServer->GetUuid() : "") << "\""; + msg << " machineIdentifier=\"" << (pVid ? pVid->m_Server.GetUuid() : "") << "\""; msg << " protocol=\"http\""; - msg << " address=\"" << (pVid ? pVid->m_pServer->GetIpAdress() : "") << "\""; - msg << " port=\"" << (pVid ? pVid->m_pServer->GetPort() : 0) << "\""; + msg << " address=\"" << (pVid ? pVid->m_Server.GetIpAdress() : "") << "\""; + msg << " port=\"" << (pVid ? pVid->m_Server.GetPort() : 0) << "\""; msg << " guid=\"" << Config::GetInstance().GetUUID() << "\""; msg << " containerKey=\"" << (pVid ? pVid->m_sKey : "/library/metadata/900000") << "\""; msg << " key=\"" << (pVid ? pVid->m_sKey : "/library/metadata/900000") << "\""; @@ -239,14 +239,14 @@ void Subscriber::SendUpdate(std::string msg, bool isNav) ActionManager::ActionManager() {} -void ActionManager::AddAction(Video* video) +void ActionManager::AddAction(Video video) { m_myLock.Lock(&m_myMutex); m_Action = video; m_isAction = true; } -Video* ActionManager::GetAction() +Video ActionManager::GetAction() { m_myLock.Lock(&m_myMutex); m_isAction = false; @@ -272,7 +272,7 @@ void cSubscriberStatus::Replaying(const cControl* DvbPlayerControl, const char* pControl = const_cast<cControl*>(DvbPlayerControl); cHlsPlayerControl* hlsControl = dynamic_cast<cHlsPlayerControl*>(pControl); if(hlsControl) { - pVideo = hlsControl->m_pVideo; + pVideo = &hlsControl->m_Video; } else { pVideo = NULL; } diff --git a/SubscriptionManager.h b/SubscriptionManager.h index 19cfad1..fc96448 100644 --- a/SubscriptionManager.h +++ b/SubscriptionManager.h @@ -90,15 +90,15 @@ public: static ActionManager instance; return instance; } - void AddAction(Video* video); - Video* GetAction(); + void AddAction(Video video); + Video GetAction(); bool IsAction(); private: cMutexLock m_myLock; cMutex m_myMutex; ActionManager(); - Video* m_Action; + Video m_Action; bool m_isAction; }; diff --git a/hlsPlayer.cpp b/hlsPlayer.cpp index df62b0d..fe52c7c 100644 --- a/hlsPlayer.cpp +++ b/hlsPlayer.cpp @@ -379,11 +379,11 @@ int cHlsSegmentLoader::GetStreamLenght() //--- cHlsPlayer -cHlsPlayer::cHlsPlayer(std::string startm3u8, plexclient::Video* Video, int offset) +cHlsPlayer::cHlsPlayer(std::string startm3u8, plexclient::Video Video, int offset) { dsyslog("[plex]: '%s'", __FUNCTION__); m_pSegmentLoader = new cHlsSegmentLoader(startm3u8); - m_pVideo = Video; + m_Video = Video; m_timeOffset = offset; m_jumpOffset = 0; m_tTimeSum = 0; @@ -406,8 +406,8 @@ void cHlsPlayer::SetAudioAndSubtitleTracks(void) { //DeviceClrAvailableTracks(); DeviceSetAvailableTrack(ttDolby, 0, 0, "Current"); - if(m_pVideo->m_Media.m_vStreams.size() > 0) { - std::vector<plexclient::Stream> streams = m_pVideo->m_Media.m_vStreams; + if(m_Video.m_Media.m_vStreams.size() > 0) { + std::vector<plexclient::Stream> streams = m_Video.m_Media.m_vStreams; for(std::vector<plexclient::Stream>::iterator it = streams.begin(); it != streams.end(); ++it) { plexclient::Stream *pStream = &(*it); if(pStream->m_eStreamType == plexclient::sAUDIO) { @@ -432,7 +432,7 @@ void cHlsPlayer::Action(void) DeviceFreeze(); m_doJump = false; m_bFirstPlay = true; - std::string uri = plexclient::Plexservice::GetUniversalTranscodeUrl(m_pVideo, m_jumpOffset); + std::string uri = plexclient::Plexservice::GetUniversalTranscodeUrl(&m_Video, m_jumpOffset); m_pSegmentLoader->LoadM3u8(uri); m_timeOffset = m_jumpOffset; DeviceClear(); @@ -461,7 +461,7 @@ void cHlsPlayer::Action(void) } } // set as watched if >= 90% - int t = m_pVideo->m_Media.m_lDuration / 1000 * 0.9; + int t = m_Video.m_Media.m_lDuration / 1000 * 0.9; if( GetPlayedSeconds() >= t) { SetWatched(); } @@ -506,14 +506,12 @@ void cHlsPlayer::Activate(bool On) bool cHlsPlayer::GetIndex(int& Current, int& Total, bool SnapToIFrame __attribute__((unused))) { - if(m_pVideo) { - if( m_pVideo->m_Media.m_lDuration == 0) { - Total = m_pSegmentLoader->GetStreamLenght() * FramesPerSecond(); - } else { - Total = m_pVideo->m_Media.m_lDuration / 1000 * FramesPerSecond(); // milliseconds - } - Current = GetPlayedSeconds() * FramesPerSecond(); + if(m_Video.m_Media.m_lDuration > 0) { + Total = m_Video.m_Media.m_lDuration / 1000 * FramesPerSecond(); // milliseconds + } else { + Total = m_pSegmentLoader->GetStreamLenght() * FramesPerSecond(); } + Current = GetPlayedSeconds() * FramesPerSecond(); return true; } @@ -564,10 +562,7 @@ void cHlsPlayer::Stop(void) double cHlsPlayer::FramesPerSecond(void) { - if(m_pVideo) { - return m_pVideo->m_Media.m_VideoFrameRate ? m_pVideo->m_Media.m_VideoFrameRate : DEFAULTFRAMESPERSECOND; - } - return DEFAULTFRAMESPERSECOND; + return m_Video.m_Media.m_VideoFrameRate ? m_Video.m_Media.m_VideoFrameRate : DEFAULTFRAMESPERSECOND; } void cHlsPlayer::JumpRelative(int seconds) @@ -590,8 +585,8 @@ void cHlsPlayer::SetAudioTrack(eTrackType Type __attribute__((unused)), const tT dsyslog("[plex]%s %d %s", __FUNCTION__, TrackId->id, TrackId->language); // Check if stream availiable int streamId = 0; - if(m_pVideo->m_Media.m_vStreams.size() > 0) { - std::vector<plexclient::Stream> streams = m_pVideo->m_Media.m_vStreams; + if(m_Video.m_Media.m_vStreams.size() > 0) { + std::vector<plexclient::Stream> streams = m_Video.m_Media.m_vStreams; for(std::vector<plexclient::Stream>::iterator it = streams.begin(); it != streams.end(); ++it) { plexclient::Stream *pStream = &(*it); if(pStream->m_eStreamType == plexclient::sAUDIO && pStream->m_iIndex + AudioIndexOffset == TrackId->id) { @@ -602,9 +597,9 @@ void cHlsPlayer::SetAudioTrack(eTrackType Type __attribute__((unused)), const tT } // Then do the request if(streamId > 0) { - Poco::Net::HTTPClientSession session(m_pVideo->m_pServer->GetIpAdress(), m_pVideo->m_pServer->GetPort()); + Poco::Net::HTTPClientSession session(m_Video.m_Server.GetIpAdress(), m_Video.m_Server.GetPort()); - std::string uri = "/library/parts/" + std::string(itoa(m_pVideo->m_Media.m_iPartId)) + "?audioStreamID=" + std::string(itoa(streamId)); + std::string uri = "/library/parts/" + std::string(itoa(m_Video.m_Media.m_iPartId)) + "?audioStreamID=" + std::string(itoa(streamId)); Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_PUT, uri); session.sendRequest(req); @@ -653,8 +648,8 @@ void cHlsPlayer::ReportProgress(bool stopped) state = "paused"; } - Poco::Net::HTTPClientSession session(m_pVideo->m_pServer->GetIpAdress(), m_pVideo->m_pServer->GetPort()); - std::string uri = "/:/progress?key=" + std::string(itoa(m_pVideo->m_iRatingKey)) + "&identifier=com.plexapp.plugins.library&time=" + std::string(itoa(GetPlayedSeconds()*1000)) + "&state=" + state; + Poco::Net::HTTPClientSession session(m_Video.m_Server.GetIpAdress(), m_Video.m_Server.GetPort()); + std::string uri = "/:/progress?key=" + std::string(itoa(m_Video.m_iRatingKey)) + "&identifier=com.plexapp.plugins.library&time=" + std::string(itoa(GetPlayedSeconds()*1000)) + "&state=" + state; Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, uri); session.sendRequest(req); @@ -669,8 +664,8 @@ void cHlsPlayer::ReportProgress(bool stopped) void cHlsPlayer::SetWatched(void) { - Poco::Net::HTTPClientSession session(m_pVideo->m_pServer->GetIpAdress(), m_pVideo->m_pServer->GetPort()); - std::string uri = "/:/scrobble?key=" + std::string(itoa(m_pVideo->m_iRatingKey)) + "&identifier=com.plexapp.plugins.library"; + Poco::Net::HTTPClientSession session(m_Video.m_Server.GetIpAdress(), m_Video.m_Server.GetPort()); + std::string uri = "/:/scrobble?key=" + std::string(itoa(m_Video.m_iRatingKey)) + "&identifier=com.plexapp.plugins.library"; Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, uri); session.sendRequest(req); diff --git a/hlsPlayer.h b/hlsPlayer.h index ee27049..79e1abf 100644 --- a/hlsPlayer.h +++ b/hlsPlayer.h @@ -75,7 +75,7 @@ class cHlsPlayer : public cPlayer, cThread private: int AudioIndexOffset; cHlsSegmentLoader* m_pSegmentLoader; - plexclient::Video* m_pVideo; + plexclient::Video m_Video; int m_jumpOffset; int m_timeOffset; @@ -109,7 +109,7 @@ protected: public: //static cMutex s_mutex; - cHlsPlayer(std::string startm3u8, plexclient::Video* Video, int offset = 0); + cHlsPlayer(std::string startm3u8, plexclient::Video Video, int offset = 0); ~cHlsPlayer(); virtual bool GetIndex(int &Current, int &Total, bool SnapToIFrame = false); diff --git a/hlsPlayerControl.cpp b/hlsPlayerControl.cpp index dff1a30..b9e15d3 100644 --- a/hlsPlayerControl.cpp +++ b/hlsPlayerControl.cpp @@ -8,11 +8,8 @@ #include "PVideo.h" // static -cControl* cHlsPlayerControl::Create(plexclient::Video* Video) +cControl* cHlsPlayerControl::Create(plexclient::Video Video) { - if(!Video->m_pServer) - return NULL; - // Stop already playing stream cHlsPlayerControl* c = dynamic_cast<cHlsPlayerControl*>(cControl::Control(true)); if(c) { @@ -20,20 +17,20 @@ cControl* cHlsPlayerControl::Create(plexclient::Video* Video) } // get Metadata - std::string uri = Video->m_pServer->GetUri() + Video->m_sKey; - plexclient::MediaContainer *pmcontainer = plexclient::Plexservice::GetMediaContainer(uri); + std::string uri = Video.m_Server.GetUri() + Video.m_sKey; + plexclient::MediaContainer pmcontainer = plexclient::Plexservice::GetMediaContainer(uri); - std::string transcodeUri = plexclient::Plexservice::GetUniversalTranscodeUrl(&pmcontainer->m_vVideos[0], Video->m_iMyPlayOffset); - cHlsPlayerControl* playerControl = new cHlsPlayerControl(new cHlsPlayer(transcodeUri, &pmcontainer->m_vVideos[0], Video->m_iMyPlayOffset), pmcontainer); - playerControl->m_title = pmcontainer->m_vVideos[0].m_sTitle; + std::string transcodeUri = plexclient::Plexservice::GetUniversalTranscodeUrl(&pmcontainer.m_vVideos[0], Video.m_iMyPlayOffset); + cHlsPlayerControl* playerControl = new cHlsPlayerControl(new cHlsPlayer(transcodeUri, pmcontainer.m_vVideos[0], Video.m_iMyPlayOffset), pmcontainer.m_vVideos[0]); + playerControl->m_title = pmcontainer.m_vVideos[0].m_sTitle; return playerControl; } -cHlsPlayerControl::cHlsPlayerControl(cHlsPlayer* Player, plexclient::MediaContainer* Container) :cControl(Player) +cHlsPlayerControl::cHlsPlayerControl(cHlsPlayer* Player, plexclient::Video Video) :cControl(Player) { dsyslog("[plex]: '%s'", __FUNCTION__); player = Player; - m_pVideo = &Container->m_vVideos[0]; + m_Video = Video; //m_title = title; displayReplay = NULL; @@ -43,7 +40,7 @@ cHlsPlayerControl::cHlsPlayerControl(cHlsPlayer* Player, plexclient::MediaContai lastSpeed = -2; // an invalid value timeoutShow = 0; - cStatus::MsgReplaying(this, m_title.c_str(), m_pVideo->m_Media.m_sPartFile.c_str(), true); + cStatus::MsgReplaying(this, m_title.c_str(), m_Video.m_Media.m_sPartFile.c_str(), true); } cHlsPlayerControl::~cHlsPlayerControl() diff --git a/hlsPlayerControl.h b/hlsPlayerControl.h index 6457363..c64139a 100644 --- a/hlsPlayerControl.h +++ b/hlsPlayerControl.h @@ -12,7 +12,6 @@ class cHlsPlayerControl : public cControl { private: static volatile int active; - plexclient::MediaContainer* m_pMediaContainer; cHlsPlayer* player; std::string m_title; @@ -31,10 +30,10 @@ protected: //void ShowMode(); public: - plexclient::Video* m_pVideo; + plexclient::Video m_Video; - static cControl* Create(plexclient::Video* Video); - cHlsPlayerControl(cHlsPlayer* Player, plexclient::MediaContainer* Container); + static cControl* Create(plexclient::Video Video); + cHlsPlayerControl(cHlsPlayer* Player, plexclient::Video Video); virtual ~cHlsPlayerControl(); virtual void Show(void); @@ -15,10 +15,10 @@ static const char *MAINMENUENTRY = "Plex for VDR"; ** ** @param filename path and file name */ -static void PlayFile(plexclient::Video* pVid) +static void PlayFile(plexclient::Video Vid) { - isyslog("[plex]: play file '%s'\n", pVid->m_sKey.c_str()); - cControl* control = cHlsPlayerControl::Create(pVid); + isyslog("[plex]: play file '%s'\n", Vid.m_sKey.c_str()); + cControl* control = cHlsPlayerControl::Create(Vid); if(control) { cControl::Launch(control); } @@ -142,8 +142,7 @@ eOSState cPlexBrowser::ProcessSelected() if(item->IsVideo()) { - plexclient::Video* pVid = item->GetAttachedVideo(); - PlayFile(pVid); + PlayFile(*item->GetAttachedVideo()); return osEnd; } @@ -329,8 +328,7 @@ void cMyPlugin::MainThreadHook(void) // dsyslog("[plex]%s:\n", __FUNCTION__); // Start Tasks, e.g. Play Video if(plexclient::ActionManager::GetInstance().IsAction()) { - plexclient::Video* video = plexclient::ActionManager::GetInstance().GetAction(); - PlayFile(video); + PlayFile(plexclient::ActionManager::GetInstance().GetAction()); } } diff --git a/plexgdm.cpp b/plexgdm.cpp index 0ad2fe0..9eb152f 100644 --- a/plexgdm.cpp +++ b/plexgdm.cpp @@ -12,7 +12,7 @@ plexgdm::plexgdm() _multicastAddress = "239.0.0.250"; _clientUpdatePort = 32412; _helloSent = false; - _discoverInterval = 10 * 1000; + _discoverInterval = 30 * 1000; _discoverTimer.Set(1); m_discoverAdress = Poco::Net::SocketAddress(_multicastAddress, 32414); |