[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