Browse Source

Carla: Show error when a plugin-bridge crashes

tags/v0.9.0
falkTX 12 years ago
parent
commit
6bcd76a8f5
4 changed files with 24 additions and 2 deletions
  1. +6
    -1
      c++/carla-backend/carla_backend.h
  2. +9
    -0
      c++/carla-backend/carla_threads.cpp
  3. +7
    -0
      src/carla.py
  4. +2
    -1
      src/shared_carla.py

+ 6
- 1
c++/carla-backend/carla_backend.h View File

@@ -499,10 +499,15 @@ enum CallbackType {
*/
CALLBACK_NSM_SAVE = 18,

/*!
* An error occurred, show last error to user.
*/
CALLBACK_ERROR = 19,

/*!
* The engine has crashed or malfunctioned and will no longer work.
*/
CALLBACK_QUIT = 19
CALLBACK_QUIT = 20
};

/*!


+ 9
- 0
c++/carla-backend/carla_threads.cpp View File

@@ -287,8 +287,17 @@ void CarlaPluginThread::run()
m_process->waitForFinished(-1);

if (m_process->exitCode() != 0)
{
qWarning("CarlaPluginThread::run() - bridge crashed");

QString errorString = QString("Plugin '%1' has crashed!\n"
"Saving now will lose its current settings.\n"
"Please remove this plugin, and not rely on it from this point.").arg(plugin->name());
CarlaBackend::setLastError(errorString.toUtf8().constData());

engine->callback(CarlaBackend::CALLBACK_ERROR, plugin->id(), 0, 0, 0.0);
}

break;
}
}


+ 7
- 0
src/carla.py View File

@@ -1220,6 +1220,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
self.connect(self, SIGNAL("NSM_Open1Callback()"), SLOT("slot_handleNSM_Open1Callback()"))
self.connect(self, SIGNAL("NSM_Open2Callback()"), SLOT("slot_handleNSM_Open2Callback()"))
self.connect(self, SIGNAL("NSM_SaveCallback()"), SLOT("slot_handleNSM_SaveCallback()"))
self.connect(self, SIGNAL("ErrorCallback(QString)"), SLOT("slot_handleErrorCallback(QString)"))
self.connect(self, SIGNAL("QuitCallback()"), SLOT("slot_handleQuitCallback()"))

self.TIMER_GUI_STUFF = self.startTimer(self.m_savedSettings["Main/RefreshInterval"]) # Peaks
@@ -1503,6 +1504,10 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
self.save_project()
Carla.Host.nsm_reply_save()

@pyqtSlot(str)
def slot_handleErrorCallback(self, error):
QMessageBox.critical(self, self.tr("Error"), error)

@pyqtSlot()
def slot_handleQuitCallback(self):
CustomMessageBox(self, QMessageBox.Warning, self.tr("Warning"),
@@ -2071,6 +2076,8 @@ def callback_function(ptr, action, pluginId, value1, value2, value3):
Carla.gui.emit(SIGNAL("NSM_Open2Callback()"))
elif action == CALLBACK_NSM_SAVE:
Carla.gui.emit(SIGNAL("NSM_SaveCallback()"))
elif action == CALLBACK_ERROR:
Carla.gui.emit(SIGNAL("ErrorCallback(QString)"), cString(Carla.Host.get_last_error()))
elif action == CALLBACK_QUIT:
Carla.gui.emit(SIGNAL("QuitCallback()"))



+ 2
- 1
src/shared_carla.py View File

@@ -193,7 +193,8 @@ CALLBACK_NSM_ANNOUNCE = 15
CALLBACK_NSM_OPEN1 = 16
CALLBACK_NSM_OPEN2 = 17
CALLBACK_NSM_SAVE = 18
CALLBACK_QUIT = 19
CALLBACK_ERROR = 19
CALLBACK_QUIT = 20

# enum ProcessModeType
PROCESS_MODE_SINGLE_CLIENT = 0


Loading…
Cancel
Save