]> git.sesse.net Git - kdenlive/commitdiff
number of buttons expanded to 15. Contour shuttle pro v2 full support
authorEd Rogalsky <ed.rogalsky@googlemail.com>
Mon, 19 Nov 2012 21:12:25 +0000 (22:12 +0100)
committerEd Rogalsky <ed.rogalsky@googlemail.com>
Mon, 19 Nov 2012 21:12:25 +0000 (22:12 +0100)
issue: the fd is read in blocking mode. The thread is never shutdown
properly and on some systems the program hangs on close. As workaround
the thread is terminated

src/jogshuttle.cpp
src/jogshuttle.h
src/kdenlivesettingsdialog.cpp
src/mainwindow.cpp
src/widgets/configjogshuttle_ui.ui

index 8446076e95da3e74a9186a29b5f0dd867ecabb1e..1cde287f80e4e780c2ed27bb9f49195736a986ad 100644 (file)
@@ -203,7 +203,7 @@ JogShuttle::JogShuttle(QString device, QObject *parent) :
 
 JogShuttle::~JogShuttle()
 {
-    if (m_shuttleProcess.isRunning()) m_shuttleProcess.exit();
+       stopDevice();
 }
 
 void JogShuttle::initDevice(QString device)
@@ -218,8 +218,19 @@ void JogShuttle::initDevice(QString device)
 
 void JogShuttle::stopDevice()
 {
-    if (m_shuttleProcess.isRunning())
+    if (m_shuttleProcess.isRunning()) {
+       /* the read fd is in blocking mode => stop_me is broken at the moment */
         m_shuttleProcess.stop_me = true;
+        m_shuttleProcess.exit();
+        /* give the thread some time to shutdown */
+        m_shuttleProcess.wait(100);
+
+        /* if still running - do it in the hardcore way */
+        if (m_shuttleProcess.isRunning()) {
+               m_shuttleProcess.terminate();
+            kDebug() << "/// terminate jogshuttle process\n";
+        }
+    }
 }
 
 void JogShuttle::customEvent(QEvent* e)
index 2c28d88fc1238e1d6e9b78d1610a9a7002410153..f2523cc93c56ec6e20a38092ac050258541a8aa7 100644 (file)
@@ -40,7 +40,7 @@ public:
     bool shuttlechange;
     unsigned short jogvalue;
     bool isWorking();
-    bool stop_me;
+    volatile bool stop_me;
     QString m_device;
 
 private:
index 015149bc00f1c7c692e2ebe4bdc0819cbf1e24a2..adb12e5848c5cd0f8c96addef90f06325d32073b 100644 (file)
@@ -137,6 +137,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap<QString, QString>& map
     m_configShuttle.shuttledisabled->hide();
 
     // Store the button pointers into an array for easier handling them in the other functions.
+    // TODO: impl enumerator or live with cut and paste :-)))
     m_shuttle_buttons.push_back(m_configShuttle.shuttle1);
     m_shuttle_buttons.push_back(m_configShuttle.shuttle2);
     m_shuttle_buttons.push_back(m_configShuttle.shuttle3);
@@ -147,6 +148,11 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap<QString, QString>& map
     m_shuttle_buttons.push_back(m_configShuttle.shuttle8);
     m_shuttle_buttons.push_back(m_configShuttle.shuttle9);
     m_shuttle_buttons.push_back(m_configShuttle.shuttle10);
+    m_shuttle_buttons.push_back(m_configShuttle.shuttle11);
+    m_shuttle_buttons.push_back(m_configShuttle.shuttle12);
+    m_shuttle_buttons.push_back(m_configShuttle.shuttle13);
+    m_shuttle_buttons.push_back(m_configShuttle.shuttle14);
+    m_shuttle_buttons.push_back(m_configShuttle.shuttle15);
 
     // populate the buttons with the current configuration. The items are sorted
     // according to the user-selected language, so they do not appear in random order.
index 78021b6c2d0c06b8d96bd2f308639af93f942012..ee580bce7cf228ec777431a6f187fccbb0048ccb 100644 (file)
@@ -676,6 +676,12 @@ MainWindow::~MainWindow()
     if (m_stopmotion) {
         delete m_stopmotion;
     }
+
+#ifdef USE_JOGSHUTTLE
+    if (m_jogProcess)
+       delete m_jogProcess;
+#endif
+
     m_effectStack->slotClipItemSelected(NULL);
     m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false);
 
index 0fc352496054ecec59f5826e1c0ecc9b12ddb7c8..2b69f8c887ff9bc4365f5a55c24de47fea53575b 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>327</width>
-    <height>393</height>
+    <width>299</width>
+    <height>548</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout_2">
       <string>Device configuration</string>
      </property>
      <layout class="QGridLayout" name="gridLayout">
+      <item row="12" column="0">
+       <widget class="QLabel" name="label_13">
+        <property name="text">
+         <string>Button 12</string>
+        </property>
+       </widget>
+      </item>
+      <item row="14" column="0">
+       <widget class="QLabel" name="label_15">
+        <property name="text">
+         <string>Button 14</string>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="0">
+       <widget class="QLabel" name="label_14">
+        <property name="text">
+         <string>Button 13</string>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="0">
+       <widget class="QLabel" name="label_12">
+        <property name="text">
+         <string>Button 11</string>
+        </property>
+       </widget>
+      </item>
       <item row="7" column="0">
        <widget class="QLabel" name="label_8">
         <property name="text">
       <item row="3" column="1" colspan="2">
        <widget class="KComboBox" name="shuttle3"/>
       </item>
+      <item row="4" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle4"/>
+      </item>
       <item row="4" column="0">
        <widget class="QLabel" name="label_7">
         <property name="text">
         </property>
        </widget>
       </item>
-      <item row="4" column="1" colspan="2">
-       <widget class="KComboBox" name="shuttle4"/>
-      </item>
       <item row="5" column="0">
        <widget class="QLabel" name="label_5">
         <property name="text">
       <item row="10" column="1" colspan="2">
        <widget class="KComboBox" name="shuttle10"/>
       </item>
+      <item row="15" column="0">
+       <widget class="QLabel" name="label_16">
+        <property name="text">
+         <string>Button 15</string>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle11"/>
+      </item>
+      <item row="12" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle12"/>
+      </item>
+      <item row="13" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle13"/>
+      </item>
+      <item row="14" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle14"/>
+      </item>
+      <item row="15" column="1" colspan="2">
+       <widget class="KComboBox" name="shuttle15"/>
+      </item>
      </layout>
     </widget>
    </item>