[vlc-commits] [Git][videolan/vlc][master] 7 commits: qt: rename `PlayerController::jumpToTime()` to `PlayerController::jumpTime()`

Steve Lhomme (@robUx4) gitlab at videolan.org
Wed Jun 24 03:00:50 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
a0aee3d5 by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qt: rename `PlayerController::jumpToTime()` to `PlayerController::jumpTime()`

`::jumpToTime()` can be confused with `::setTime()`.

- - - - -
cae7867f by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qt: relax time comparison when adjusting lyric current index in `PlayerController`

Due to various reasons, such as floating point conversions, we can give some room
to compensate for the error.

- - - - -
3fc7654d by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qt: register `vlcTick`, `vlcTime`, and `vlcDuration` value types in `VLC.Player`

... rather than `VLC.MainInterface`.

- - - - -
d63f5c5d by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qml: introduce signal `playerPositionChangeRequested(vlcTime)` in `LyricsFlickable`

- - - - -
ada03a0d by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qml: add note regarding using `timedText` value type in `LyricsFlickable`

- - - - -
39287aeb by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qml: use tap handler to request player time change in `LyricsFlickable`

- - - - -
5122ba39 by Fatih Uzunoglu at 2026-06-24T02:42:09+00:00
qml: handle `LyricsFlickable::playerPositionChangeRequested()` signal in `Player`

- - - - -


5 changed files:

- modules/gui/qt/maininterface/mainui.cpp
- modules/gui/qt/player/player_controller.cpp
- modules/gui/qt/player/player_controller.hpp
- modules/gui/qt/player/qml/LyricsFlickable.qml
- modules/gui/qt/player/qml/Player.qml


Changes:

=====================================
modules/gui/qt/maininterface/mainui.cpp
=====================================
@@ -230,9 +230,6 @@ void MainUI::registerQMLTypes()
         qmlRegisterUncreatableType<QAbstractItemModel>(uri, versionMajor, versionMinor, "QtAbstractItemModel", "");
         qmlRegisterUncreatableType<QWindow>(uri, versionMajor, versionMinor, "QtWindow", "");
         qmlRegisterUncreatableType<QScreen>(uri, versionMajor, versionMinor, "QtScreen", "");
-        qmlRegisterTypesAndRevisions<VLCDuration>(uri, versionMajor);
-        qmlRegisterTypesAndRevisions<VLCTime>(uri, versionMajor);
-        qmlRegisterUncreatableMetaObject(VLCTickForeign::staticMetaObject, uri, versionMajor, versionMinor, "VLCTick", "Not Instantiable" );
         qmlRegisterType<VideoSurface>(uri, versionMajor, versionMinor, "VideoSurface");
         qmlRegisterUncreatableType<BaseModel>( uri, versionMajor, versionMinor, "BaseModel", "Base Model is uncreatable." );
         qmlRegisterUncreatableType<VLCVarChoiceModel>(uri, versionMajor, versionMinor, "VLCVarChoiceModel", "generic variable with choice model" );
@@ -299,6 +296,9 @@ void MainUI::registerQMLTypes()
         qmlRegisterSingletonInstance<PlayerController>(uri, versionMajor, versionMinor, "Player", m_intf->p_mainPlayerController);
         qmlRegisterTypesAndRevisions<TimedText>(uri, versionMajor);
         qmlRegisterType<PlayerHighResolutionTimeUpdater>(uri, versionMajor, versionMinor, "HighResolutionTimeUpdater");
+        qmlRegisterUncreatableMetaObject(VLCTickForeign::staticMetaObject, uri, versionMajor, versionMinor, "VLCTick", "Not Instantiable" );
+        qmlRegisterTypesAndRevisions<VLCDuration>(uri, versionMajor);
+        qmlRegisterTypesAndRevisions<VLCTime>(uri, versionMajor);
 
         qmlRegisterType<QmlBookmarkMenu>( uri, versionMajor, versionMinor, "QmlBookmarkMenu" );
         qmlRegisterType<QmlProgramMenu>( uri, versionMajor, versionMinor, "QmlProgramMenu" );


=====================================
modules/gui/qt/player/player_controller.cpp
=====================================
@@ -1407,10 +1407,10 @@ void PlayerController::jumpBwd()
     vlc_player_JumpTime( d->m_player, vlc_tick_from_sec( -i_interval ) );
 }
 
-void PlayerController::jumpToTime(VLCTime i_time)
+void PlayerController::jumpTime(VLCTime i_time)
 {
     Q_D(PlayerController);
-    msg_Dbg( d->p_intf, "jumpToTime");
+    msg_Dbg( d->p_intf, "jumpTime");
     vlc_player_locker lock{ d->m_player };
     if( !d->isCurrentItemSynced() )
         return;
@@ -1874,7 +1874,7 @@ void PlayerController::updateTime(vlc_tick_t system_now, bool forceUpdate)
 
         for (int i = 0; i < lyrics.size(); ++i)
         {
-            if (lyrics[i].time().toVLCTick() > currentTime)
+            if ((lyrics[i].time().toVLCTick() - 1) > currentTime)
                 break;
             currentIndex = i;
         }


=====================================
modules/gui/qt/player/player_controller.hpp
=====================================
@@ -240,7 +240,7 @@ public slots:
 
     void jumpFwd();
     void jumpBwd();
-    void jumpToTime( VLCTime i_time );
+    void jumpTime( VLCTime i_time );
     void jumpToPos( double );
     void frameNext();
 


=====================================
modules/gui/qt/player/qml/LyricsFlickable.qml
=====================================
@@ -45,6 +45,9 @@ Flickable {
     boundsBehavior: Flickable.StopAtBounds
     clip: !fadingEdge.implicitClipping && (height < implicitHeight)
 
+    // TODO: `vlcTime` type can not be used due to Qt 6.2:
+    signal playerPositionChangeRequested(var time)
+
     function snapToCurrentLyric() {
         const idx = Player.currentLyricIndex
         if (idx < 0)
@@ -103,6 +106,7 @@ Flickable {
                 id: lyricDelegate
 
                 required property int index
+                // TODO: `timedText` type can not be used due to Qt 6.2:
                 required property var modelData
 
                 readonly property bool isCurrent: index === Player.currentLyricIndex
@@ -140,6 +144,12 @@ Flickable {
                     enabled: lyricsFlickable.animationsEnabled
                     OpacityAnimator { duration: VLCStyle.duration_long }
                 }
+
+                TapHandler {
+                    onTapped: {
+                        lyricsFlickable.playerPositionChangeRequested(lyricDelegate.modelData.time)
+                    }
+                }
             }
         }
     }


=====================================
modules/gui/qt/player/qml/Player.qml
=====================================
@@ -476,7 +476,14 @@ FocusScope {
                                 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
                                                          implicitContentHeight + topPadding + bottomPadding)
 
-                                contentItem: LyricsFlickable { id: lyricsFlickable }
+                                contentItem: LyricsFlickable {
+                                    id: lyricsFlickable
+
+                                    onPlayerPositionChangeRequested: (time) => {
+                                        Player.setTime(time)
+                                        lyricsFlickable.lyricsSyncToPlayback = true
+                                    }
+                                }
                             }
                             anchors.left: parent.left
                             anchors.right: parent.right



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/54017b7563ebc625f390ba7282f846a79680e397...5122ba3940c844efe553bb510169c6d359d82dff

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/54017b7563ebc625f390ba7282f846a79680e397...5122ba3940c844efe553bb510169c6d359d82dff
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list