[vlc-commits] Qt: add SeekPoints data

Francois Cartegnie git at videolan.org
Mon Jul 11 23:14:22 CEST 2011


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Jun 25 20:29:53 2011 +0200| [f20380373d5f4b144b010a40736cc51962f41d49] | committer: Francois Cartegnie

Qt: add SeekPoints data

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f20380373d5f4b144b010a40736cc51962f41d49
---

 modules/gui/qt4/Modules.am              |    3 +
 modules/gui/qt4/adapters/seekpoints.cpp |   73 +++++++++++++++++++++++++++++++
 modules/gui/qt4/adapters/seekpoints.hpp |   63 ++++++++++++++++++++++++++
 3 files changed, 139 insertions(+), 0 deletions(-)

diff --git a/modules/gui/qt4/Modules.am b/modules/gui/qt4/Modules.am
index 8ebfab3..1ed9f58 100644
--- a/modules/gui/qt4/Modules.am
+++ b/modules/gui/qt4/Modules.am
@@ -22,6 +22,7 @@ nodist_SOURCES_qt4 = \
 		actions_manager.moc.cpp \
 		extensions_manager.moc.cpp \
 		recents.moc.cpp \
+		adapters/seekpoints.moc.cpp \
 		variables.moc.cpp \
 		dialogs/playlist.moc.cpp \
 		dialogs/bookmarks.moc.cpp \
@@ -251,6 +252,7 @@ SOURCES_qt4 = 	qt4.cpp \
 		actions_manager.cpp \
 		extensions_manager.cpp \
 		recents.cpp \
+		adapters/seekpoints.cpp \
 		variables.cpp \
 		dialogs/playlist.cpp \
 		dialogs/bookmarks.cpp \
@@ -327,6 +329,7 @@ noinst_HEADERS = \
 	actions_manager.hpp \
 	extensions_manager.hpp \
 	recents.hpp \
+	adapters/seekpoints.hpp \
 	variables.hpp \
 	dialogs/playlist.hpp \
 	dialogs/bookmarks.hpp \
diff --git a/modules/gui/qt4/adapters/seekpoints.cpp b/modules/gui/qt4/adapters/seekpoints.cpp
new file mode 100644
index 0000000..bf4037a
--- /dev/null
+++ b/modules/gui/qt4/adapters/seekpoints.cpp
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * seekpoints.cpp : Chapters & Bookmarks (menu)
+ *****************************************************************************
+ * Copyright © 2011 the VideoLAN team
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+
+#include "recents.hpp"
+#include "dialogs_provider.hpp"
+#include "menus.hpp"
+
+#include "seekpoints.hpp"
+
+#include "qt4.hpp"
+#include "input_manager.hpp"
+
+SeekPoints::SeekPoints( QObject *parent, intf_thread_t *p_intf_ ) :
+    QObject( parent ), p_intf( p_intf_ )
+{}
+
+void SeekPoints::update()
+{
+    input_title_t *p_title = NULL;
+    input_thread_t *p_input_thread = playlist_CurrentInput( THEPL );
+    int i_title_id = -1;
+    if( !p_input_thread ) { pointsList.clear(); return; }
+
+    if ( input_Control( p_input_thread, INPUT_GET_TITLE_INFO, &p_title, &i_title_id )
+        != VLC_SUCCESS )
+    {
+        vlc_object_release( p_input_thread );
+        pointsList.clear();
+        return;
+    }
+
+    vlc_object_release( p_input_thread );
+
+    /* lock here too, as update event is triggered by an external thread */
+    if ( !access() ) return;
+    pointsList.clear();
+    for ( int i=0; i<p_title->i_seekpoint ; i++ )
+        pointsList << SeekPoint( p_title->seekpoint[i] );
+
+    vlc_input_title_Delete( p_title );
+    release();
+}
+
+QList<SeekPoint> const SeekPoints::getPoints()
+{
+    QList<SeekPoint> copy;
+    if ( access() )
+    {
+        copy = pointsList;
+        release();
+    }
+    return copy;
+}
+
diff --git a/modules/gui/qt4/adapters/seekpoints.hpp b/modules/gui/qt4/adapters/seekpoints.hpp
new file mode 100644
index 0000000..9ae1fba
--- /dev/null
+++ b/modules/gui/qt4/adapters/seekpoints.hpp
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * seekpoints.hpp : Chapters & Bookmarks (menu)
+ *****************************************************************************
+ * Copyright © 2011 the VideoLAN team
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef SEEKPOINTS_HPP
+#define SEEKPOINTS_HPP
+
+#include <vlc_common.h>
+#include <vlc_interface.h>
+#include <vlc_input.h>
+
+#include <QObject>
+#include <QList>
+#include <QMutex>
+
+class SeekPoint
+{
+public:
+    SeekPoint( seekpoint_t *seekpoint )
+    {
+        time = seekpoint->i_time_offset;
+        name = seekpoint->psz_name;
+    };
+    int64_t time;
+    QString name;
+};
+
+class SeekPoints : public QObject
+{
+    Q_OBJECT
+public:
+    SeekPoints( QObject *, intf_thread_t * );
+    QList<SeekPoint> const getPoints();
+    bool access() { return listMutex.tryLock( 100 ); }
+    void release() { listMutex.unlock(); }
+
+public slots:
+    void update();
+
+private:
+    QList<SeekPoint> pointsList;
+    QMutex listMutex;
+    intf_thread_t *p_intf;
+};
+
+#endif // SEEKPOINTS_HPP



More information about the vlc-commits mailing list