Skip to content

Commit

Permalink
[infomanager] only update a/v info if something has changed and only …
Browse files Browse the repository at this point in the history
…by main thread
  • Loading branch information
FernetMenta committed Nov 8, 2014
1 parent b8f67bd commit 933e31f
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 10 deletions.
8 changes: 0 additions & 8 deletions xbmc/GUIInfoManager.cpp
Expand Up @@ -1631,35 +1631,30 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, std::string *f
case VIDEOPLAYER_VIDEO_CODEC:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
strLabel = m_videoInfo.videoCodecName;
}
break;
case VIDEOPLAYER_VIDEO_RESOLUTION:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
return CStreamDetails::VideoDimsToResolutionDescription(m_videoInfo.width, m_videoInfo.height);
}
break;
case VIDEOPLAYER_AUDIO_CODEC:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
strLabel = m_audioInfo.audioCodecName;
}
break;
case VIDEOPLAYER_VIDEO_ASPECT:
if (g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
strLabel = CStreamDetails::VideoAspectToAspectDescription(m_videoInfo.videoAspectRatio);
}
break;
case VIDEOPLAYER_AUDIO_CHANNELS:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
strLabel = StringUtils::Format("%i", m_audioInfo.channels);
}
break;
Expand All @@ -1674,7 +1669,6 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, std::string *f
case VIDEOPLAYER_STEREOSCOPIC_MODE:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
strLabel = m_videoInfo.stereoMode;
}
break;
Expand Down Expand Up @@ -2652,7 +2646,6 @@ bool CGUIInfoManager::GetBool(int condition1, int contextWindow, const CGUIListI
case VIDEOPLAYER_IS_STEREOSCOPIC:
if(g_application.m_pPlayer->IsPlaying())
{
UpdateAVInfo();
bReturn = !m_videoInfo.stereoMode.empty();
}
break;
Expand Down Expand Up @@ -3617,7 +3610,6 @@ CStdString CGUIInfoManager::GetMusicLabel(int item)
{
if (!g_application.m_pPlayer->IsPlaying() || !m_currentFile->HasMusicInfoTag()) return "";

UpdateAVInfo();
switch (item)
{
case MUSICPLAYER_PLAYLISTLEN:
Expand Down
4 changes: 3 additions & 1 deletion xbmc/GUIInfoManager.h
Expand Up @@ -849,7 +849,7 @@ class CGUIInfoManager : public IMsgTargetCallback, public Observable
/// \brief iterates through boolean conditions and compares their stored values to current values. Returns true if any condition changed value.
bool ConditionsChangedValues(const std::map<INFO::InfoPtr, bool>& map);

bool m_AVInfoValid;
void TriggerUpdaveAVInfo() { m_AVInfoValid = false; }

protected:
friend class INFO::InfoSingle;
Expand Down Expand Up @@ -958,6 +958,8 @@ class CGUIInfoManager : public IMsgTargetCallback, public Observable
SPlayerAudioStreamInfo m_audioInfo;

CCriticalSection m_critInfo;

volatile bool m_AVInfoValid;
};

/*!
Expand Down
3 changes: 3 additions & 0 deletions xbmc/cores/VideoRenderers/RenderManager.cpp
Expand Up @@ -38,6 +38,7 @@
#include "settings/MediaSettings.h"
#include "settings/Settings.h"
#include "guilib/GUIFontManager.h"
#include "GUIInfoManager.h"

#if defined(HAS_GL)
#include "LinuxRendererGL.h"
Expand Down Expand Up @@ -644,6 +645,7 @@ void CXBMCRenderManager::SetViewMode(int iViewMode)
CSharedLock lock(m_sharedSection);
if (m_pRenderer)
m_pRenderer->SetViewMode(iViewMode);
g_infoManager.TriggerUpdaveAVInfo();
}

void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/)
Expand Down Expand Up @@ -863,6 +865,7 @@ void CXBMCRenderManager::UpdateResolution()
g_graphicsContext.SetVideoResolution(res);
}
m_bReconfigured = false;
g_infoManager.TriggerUpdaveAVInfo();
}
}

Expand Down
3 changes: 3 additions & 0 deletions xbmc/cores/dvdplayer/DVDPlayer.cpp
Expand Up @@ -486,6 +486,7 @@ void CSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer, std::
Update(s);
}
}
g_infoManager.TriggerUpdaveAVInfo();
}

void CDVDPlayer::CreatePlayers()
Expand Down Expand Up @@ -3230,6 +3231,8 @@ bool CDVDPlayer::OpenStream(CCurrentStream& current, int iStream, int source, bo
}
}

g_infoManager.TriggerUpdaveAVInfo();

return res;
}

Expand Down
6 changes: 6 additions & 0 deletions xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
Expand Up @@ -31,6 +31,7 @@
#include "utils/MathUtils.h"
#include "cores/AudioEngine/AEFactory.h"
#include "cores/AudioEngine/Utils/AEUtil.h"
#include "GUIInfoManager.h"

#include <sstream>
#include <iomanip>
Expand Down Expand Up @@ -196,6 +197,8 @@ void CDVDPlayerAudio::OpenStream( CDVDStreamInfo &hints, CDVDAudioCodec* codec )
m_silence = false;

m_maxspeedadjust = CSettings::Get().GetNumber("videoplayer.maxspeedadjust");

g_infoManager.TriggerUpdaveAVInfo();
}

void CDVDPlayerAudio::CloseStream(bool bWaitForBuffers)
Expand Down Expand Up @@ -554,6 +557,8 @@ void CDVDPlayerAudio::Process()
CLog::Log(LOGERROR, "%s - failed to create audio renderer", __FUNCTION__);

m_streaminfo.channels = audioframe.passthrough ? audioframe.encoded_channel_count : audioframe.channel_count;

g_infoManager.TriggerUpdaveAVInfo();
}

// Zero out the frame data if we are supposed to silence the audio
Expand Down Expand Up @@ -786,6 +791,7 @@ bool CDVDPlayerAudio::SwitchCodecIfNeeded()

delete m_pAudioCodec;
m_pAudioCodec = codec;

return true;
}

Expand Down
3 changes: 3 additions & 0 deletions xbmc/cores/paplayer/PAPlayer.cpp
Expand Up @@ -33,6 +33,7 @@
#include "cores/AudioEngine/AEFactory.h"
#include "cores/AudioEngine/Utils/AEUtil.h"
#include "cores/AudioEngine/Interfaces/AEStream.h"
#include "GUIInfoManager.h"

#define TIME_TO_CACHE_NEXT_FILE 5000 /* 5 seconds before end of song, start caching the next song */
#define FAST_XFADE_TIME 80 /* 80 milliseconds */
Expand Down Expand Up @@ -1064,6 +1065,8 @@ void PAPlayer::UpdateGUIData(StreamInfo *si)
total = m_currentStream->m_endOffset;
total -= m_currentStream->m_startOffset;
m_playerGUIData.m_totalTime = total;

g_infoManager.TriggerUpdaveAVInfo();
}

void PAPlayer::OnJobComplete(unsigned int jobID, bool success, CJob *job)
Expand Down
2 changes: 1 addition & 1 deletion xbmc/guilib/GUIWindowManager.cpp
Expand Up @@ -639,7 +639,7 @@ void CGUIWindowManager::FrameMove()
for (iDialog it = dialogs.begin(); it != dialogs.end(); ++it)
(*it)->FrameMove();

g_infoManager.m_AVInfoValid = false;
g_infoManager.UpdateAVInfo();
}

CGUIWindow* CGUIWindowManager::GetWindow(int id) const
Expand Down

0 comments on commit 933e31f

Please sign in to comment.