vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Aug 17 
18:05:46 2012 +0200| [6f435e8805274d1c52ad89893ee1121be35f2978] | committer: 
Francois Cartegnie

Qt: Ensure event IDs are not reused.

Qt ensures event IDs are never reused by providing a way to register
them dynamically. We have code that allocate event IDs statically and we
need to check/register those then to ensure proper offset for dynamic
ones. (we could just register them too, but this wouldn't allow
switch/case through values)

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

 modules/gui/qt4/input_manager.cpp |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/modules/gui/qt4/input_manager.cpp 
b/modules/gui/qt4/input_manager.cpp
index c130098..45e555f 100644
--- a/modules/gui/qt4/input_manager.cpp
+++ b/modules/gui/qt4/input_manager.cpp
@@ -57,6 +57,12 @@ static int InputEvent( vlc_object_t *, const char *,
 static int VbiEvent( vlc_object_t *, const char *,
                      vlc_value_t, vlc_value_t, void * );
 
+/* Ensure arbitratry (not dynamically allocated) event IDs are not in use */
+static inline void registerAndCheckEventIds( int start, int end )
+{
+    for ( int i=start ; i<=end ; i++ )
+        Q_ASSERT( QEvent::registerEventType( i ) == i ); /* event ID collision 
! */
+}
 
 /**********************************************************************
  * InputManager implementation
@@ -80,6 +86,8 @@ InputManager::InputManager( QObject *parent, intf_thread_t 
*_p_intf) :
     timeB        = 0;
     f_cache      = -1.; /* impossible initial value, different from all */
     rateLimitedEventPoster = new RateLimitedEventPoster();
+    registerAndCheckEventIds( IMEvent::PositionUpdate, 
IMEvent::FullscreenControlPlanHide );
+    registerAndCheckEventIds( PLEvent::PLItemAppended, PLEvent::PLEmpty );
 }
 
 InputManager::~InputManager()

_______________________________________________
vlc-commits mailing list
[email protected]
http://mailman.videolan.org/listinfo/vlc-commits

Reply via email to