Ticket #9393: mythtv-0-24-lcd-volume.diff

File mythtv-0-24-lcd-volume.diff, 3.2 KB (added by Michael Zanetti <michael_zanetti@…>, 9 years ago)

patch to add the LCD-volume feature also in the TV/video player

  • mythtv/libs/libmythtv/tv_play.cpp

    diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
    index 5f57074..7f1ff44 100644
    a b TV::TV(void) 
    915915      endOfPlaybackTimerId(0),      embedCheckTimerId(0),
    916916      endOfRecPromptTimerId(0),     videoExitDialogTimerId(0),
    917917      pseudoChangeChanTimerId(0),   speedChangeTimerId(0),
    918       errorRecoveryTimerId(0),      exitPlayerTimerId(0)
     918      errorRecoveryTimerId(0),      exitPlayerTimerId(0),
     919      lcdVolumeTimerId(0)
    919920{
    920921    VERBOSE(VB_PLAYBACK, LOC + "ctor -- begin");
    921922    ctorTime.start();
    void TV::timerEvent(QTimerEvent *te) 
    24572458    bool handled = true;
    24582459    if (timer_id == lcdTimerId)
    24592460        HandleLCDTimerEvent();
     2461    else if (timer_id == lcdVolumeTimerId)
     2462        HandleLCDVolumeTimerEvent();
    24602463    else if (timer_id == sleepTimerId)
    24612464        ShowOSDSleep();
    24622465    else if (timer_id == sleepDialogTimerId)
    bool TV::HandleLCDTimerEvent(void) 
    30283031    return true;
    30293032}
    30303033
     3034void TV::HandleLCDVolumeTimerEvent()
     3035{
     3036    PlayerContext *actx = GetPlayerReadLock(-1, __FILE__, __LINE__);
     3037    LCD *lcd = LCD::Get();
     3038    if (lcd)
     3039    {
     3040        ShowLCDChannelInfo(actx);
     3041        lcd->switchToChannel(lcdCallsign, lcdTitle, lcdSubtitle);
     3042    }
     3043    ReturnPlayerLock(actx);
     3044
     3045    QMutexLocker locker(&timerIdLock);
     3046    KillTimer(lcdVolumeTimerId);
     3047}
     3048
    30313049int  TV::StartTimer(int interval, int line)
    30323050{
    30333051    int x = QObject::startTimer(interval);
    void TV::ChangeVolume(PlayerContext *ctx, bool up) 
    78907908                        kOSDFunctionalType_PictureAdjust, "%", curvol * 10,
    78917909                        kOSDTimeout_Med);
    78927910        SetUpdateOSDPosition(false);
     7911
     7912        if (class LCD * lcd = LCD::Get())
     7913        {
     7914            QString appName = tr("Video");
     7915
     7916            if (StateIsLiveTV(GetState(ctx)))
     7917                appName = tr("TV");
     7918
     7919            if (ctx->buffer && ctx->buffer->isDVD())
     7920                appName = tr("DVD");
     7921           
     7922            lcd->switchToVolume(appName);
     7923            lcd->setVolumeLevel((float)curvol / 100);
     7924
     7925            QMutexLocker locker(&timerIdLock);
     7926            if (lcdVolumeTimerId)
     7927                KillTimer(lcdVolumeTimerId);
     7928
     7929            lcdVolumeTimerId = StartTimer(2000, __LINE__);
     7930        }
    78937931    }
    78947932}
    78957933
  • mythtv/libs/libmythtv/tv_play.h

    diff --git a/mythtv/libs/libmythtv/tv_play.h b/mythtv/libs/libmythtv/tv_play.h
    index 1a370b8..b26e381 100644
    a b class MPUBLIC TV : public QObject 
    600600                              int level = 0, const QString selected = "");
    601601    void UpdateLCD(void);
    602602    bool HandleLCDTimerEvent(void);
     603    void HandleLCDVolumeTimerEvent(void);
    603604    void ShowLCDChannelInfo(const PlayerContext*);
    604605    void ShowLCDDVDInfo(const PlayerContext*);
    605606
    class MPUBLIC TV : public QObject 
    834835    typedef QMap<int,const PlayerContext*> TimerContextConstMap;
    835836    mutable QMutex       timerIdLock;
    836837    volatile int         lcdTimerId;
     838    volatile int         lcdVolumeTimerId;
    837839    volatile int         keyListTimerId;
    838840    volatile int         networkControlTimerId;
    839841    volatile int         jumpMenuTimerId;