Skip to content

Commit

Permalink
qt6: Fix warnings about copying QEvents in tv_play.
Browse files Browse the repository at this point in the history
Construct new events in the heap and build a list of pointers, instead
of a list of objects. Remember to delete the events when the parent
object is deleted.
  • Loading branch information
linuxdude42 committed Mar 28, 2021
1 parent d388328 commit df4da75
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
16 changes: 10 additions & 6 deletions mythtv/libs/libmythtv/tv_play.cpp
Expand Up @@ -1243,6 +1243,10 @@ TV::~TV()
m_mainWindow->PauseIdleTimer(false);
}

qDeleteAll(m_screenPressKeyMapPlayback);
m_screenPressKeyMapPlayback.clear();
qDeleteAll(m_screenPressKeyMapLiveTV);
m_screenPressKeyMapLiveTV.clear();

delete m_lastProgram;

Expand Down Expand Up @@ -3148,9 +3152,9 @@ static bool SysEventHandleAction(MythMainWindow* MainWindow, QKeyEvent *e, const
return false;
}

QList<QKeyEvent> TV::ConvertScreenPressKeyMap(const QString &KeyList)
QList<QKeyEvent*> TV::ConvertScreenPressKeyMap(const QString &KeyList)
{
QList<QKeyEvent> keyPressList;
QList<QKeyEvent*> keyPressList;
int i = 0;
QStringList stringKeyList = KeyList.split(',');
for (const auto & str : qAsConst(stringKeyList))
Expand All @@ -3159,7 +3163,7 @@ QList<QKeyEvent> TV::ConvertScreenPressKeyMap(const QString &KeyList)
for(i = 0; i < keySequence.count(); i++)
{
uint keynum = static_cast<uint>(keySequence[static_cast<uint>(i)]);
QKeyEvent keyEvent(QEvent::None, keynum & ~Qt::KeyboardModifierMask,
auto * keyEvent = new QKeyEvent(QEvent::None, keynum & ~Qt::KeyboardModifierMask,
static_cast<Qt::KeyboardModifiers>(keynum & Qt::KeyboardModifierMask));
keyPressList.append(keyEvent);
}
Expand All @@ -3169,7 +3173,7 @@ QList<QKeyEvent> TV::ConvertScreenPressKeyMap(const QString &KeyList)
// add default remainders
for(; i < kScreenPressRegionCount; i++)
{
QKeyEvent keyEvent(QEvent::None, Qt::Key_Escape, Qt::NoModifier);
auto * keyEvent = new QKeyEvent(QEvent::None, Qt::Key_Escape, Qt::NoModifier);
keyPressList.append(keyEvent);
}
}
Expand Down Expand Up @@ -3199,8 +3203,8 @@ bool TV::TranslateGesture(const QString &Context, MythGestureEvent *Event,
region += (pos.y() / h3) * widthDivider;

if (IsLiveTV)
return m_mainWindow->TranslateKeyPress(Context, &(m_screenPressKeyMapLiveTV[region]), Actions, true);
return m_mainWindow->TranslateKeyPress(Context, &(m_screenPressKeyMapPlayback[region]), Actions, true);
return m_mainWindow->TranslateKeyPress(Context, m_screenPressKeyMapLiveTV[region], Actions, true);
return m_mainWindow->TranslateKeyPress(Context, m_screenPressKeyMapPlayback[region], Actions, true);
}
return false;
}
Expand Down
6 changes: 3 additions & 3 deletions mythtv/libs/libmythtv/tv_play.h
Expand Up @@ -207,7 +207,7 @@ class MTV_PUBLIC TV : public TVPlaybackState, public MythTVMenuItemDisplayer, pu
static TV* AcquireRelease(int& RefCount, bool Acquire, bool Create = false);
bool Init();
void InitFromDB();
static QList<QKeyEvent> ConvertScreenPressKeyMap(const QString& KeyList);
static QList<QKeyEvent*> ConvertScreenPressKeyMap(const QString& KeyList);

// Top level playback methods
bool LiveTV(bool ShowDialogs, const ChannelInfoList &Selection);
Expand Down Expand Up @@ -605,8 +605,8 @@ class MTV_PUBLIC TV : public TVPlaybackState, public MythTVMenuItemDisplayer, pu
/// 4 5 6 7
/// 8 9 10 11
static const int kScreenPressRegionCount = 12;
QList<QKeyEvent> m_screenPressKeyMapPlayback;
QList<QKeyEvent> m_screenPressKeyMapLiveTV;
QList<QKeyEvent*> m_screenPressKeyMapPlayback;
QList<QKeyEvent*> m_screenPressKeyMapLiveTV;

// Channel changing timeout notification variables
QElapsedTimer m_lockTimer;
Expand Down

0 comments on commit df4da75

Please sign in to comment.