Prepare central engine check and user notification
This commit is contained in:
parent
1d8dc009f7
commit
415721fa5b
|
@ -43,6 +43,7 @@
|
|||
#include "pbd/file_utils.h"
|
||||
#include "pbd/stacktrace.h"
|
||||
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/filesystem_paths.h"
|
||||
#include "ardour/search_paths.h"
|
||||
|
||||
|
@ -51,6 +52,7 @@
|
|||
|
||||
#include "canvas/item.h"
|
||||
|
||||
#include "actions.h"
|
||||
#include "debug.h"
|
||||
#include "public_editor.h"
|
||||
#include "keyboard.h"
|
||||
|
@ -99,6 +101,39 @@ ARDOUR_UI_UTILS::just_hide_it (GdkEventAny */*ev*/, Gtk::Window *win)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
idle_notify_engine_stopped ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Window", "toggle-audio-midi-setup");
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
|
||||
MessageDialog msg (
|
||||
_("The current operation is not possible because of an error communicating with the audio hardware."),
|
||||
false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE, true);
|
||||
|
||||
msg.add_button (_("Cancel"), Gtk::RESPONSE_CANCEL);
|
||||
|
||||
if (tact && !tact->get_active()) {
|
||||
msg.add_button (_("Configure Hardware"), Gtk::RESPONSE_OK);
|
||||
}
|
||||
|
||||
if (msg.run () == Gtk::RESPONSE_OK) {
|
||||
tact->set_active ();
|
||||
}
|
||||
return false; /* do not call again */
|
||||
}
|
||||
|
||||
bool
|
||||
ARDOUR_UI_UTILS::no_engine_notify ()
|
||||
{
|
||||
if (ARDOUR::AudioEngine::instance()->running ()) {
|
||||
return false; // 0 == OK
|
||||
}
|
||||
Glib::signal_idle().connect (sigc::ptr_fun (&idle_notify_engine_stopped));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* xpm2rgb copied from nixieclock, which bore the legend:
|
||||
|
||||
nixieclock - a nixie desktop timepiece
|
||||
|
|
|
@ -52,6 +52,11 @@ namespace ARDOUR_UI_UTILS {
|
|||
gint just_hide_it (GdkEventAny*, Gtk::Window*);
|
||||
void add_item_with_sensitivity (Gtk::Menu_Helpers::MenuList &, Gtk::Menu_Helpers::MenuElem, bool);
|
||||
|
||||
/* return 0 (false) if there is no error (engine runs).
|
||||
* otherwise queue an idle user-notificaion and return true.
|
||||
*/
|
||||
bool no_engine_notify ();
|
||||
|
||||
unsigned char* xpm2rgb (const char** xpm, uint32_t& w, uint32_t& h);
|
||||
unsigned char* xpm2rgba (const char** xpm, uint32_t& w, uint32_t& h);
|
||||
|
||||
|
|
Loading…
Reference in New Issue