| @@ -1493,6 +1493,10 @@ public: | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| else | |||||
| { | |||||
| // TODO - detect if ui-bridge crashed | |||||
| } | |||||
| if (fUI.handle != nullptr && fUI.descriptor != nullptr) | if (fUI.handle != nullptr && fUI.descriptor != nullptr) | ||||
| { | { | ||||
| @@ -4461,7 +4465,7 @@ public: | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(fUI.type == UI::TYPE_EMBED,); | CARLA_SAFE_ASSERT_RETURN(fUI.type == UI::TYPE_EMBED,); | ||||
| CARLA_SAFE_ASSERT_RETURN(fUI.window != nullptr,); | CARLA_SAFE_ASSERT_RETURN(fUI.window != nullptr,); | ||||
| carla_stdout("CarlaPluginLV2::handlePluginUIResized(%u, %u)", width, height); | |||||
| carla_debug("CarlaPluginLV2::handlePluginUIResized(%u, %u)", width, height); | |||||
| if (fUI.handle != nullptr && fExt.uiresize != nullptr) | if (fUI.handle != nullptr && fExt.uiresize != nullptr) | ||||
| fExt.uiresize->ui_resize(fUI.handle, static_cast<int>(width), static_cast<int>(height)); | fExt.uiresize->ui_resize(fUI.handle, static_cast<int>(width), static_cast<int>(height)); | ||||
| @@ -5441,7 +5445,7 @@ public: | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(urid != CARLA_URI_MAP_ID_NULL,); | CARLA_SAFE_ASSERT_RETURN(urid != CARLA_URI_MAP_ID_NULL,); | ||||
| CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0',); | CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0',); | ||||
| carla_stdout("CarlaPluginLV2::handleUridMap(%i v " P_SIZE ", \"%s\")", urid, fCustomURIDs.count()-1, uri); | |||||
| carla_debug("CarlaPluginLV2::handleUridMap(%i v " P_SIZE ", \"%s\")", urid, fCustomURIDs.count()-1, uri); | |||||
| if (urid < fCustomURIDs.count()) | if (urid < fCustomURIDs.count()) | ||||
| { | { | ||||
| @@ -32,6 +32,7 @@ CarlaBridgeUI::CarlaBridgeUI() noexcept | |||||
| : CarlaPipeClient(), | : CarlaPipeClient(), | ||||
| fQuitReceived(false), | fQuitReceived(false), | ||||
| fGotOptions(false), | fGotOptions(false), | ||||
| fLastMsgTimer(-1), | |||||
| fToolkit(nullptr), | fToolkit(nullptr), | ||||
| fLib(nullptr), | fLib(nullptr), | ||||
| fLibFilename(), | fLibFilename(), | ||||
| @@ -112,6 +113,9 @@ bool CarlaBridgeUI::msgReceived(const char* const msg) noexcept | |||||
| CARLA_SAFE_ASSERT_RETURN(std::strcmp(msg, "urid") == 0 || std::strcmp(msg, "uiOptions") == 0, true); | CARLA_SAFE_ASSERT_RETURN(std::strcmp(msg, "urid") == 0 || std::strcmp(msg, "uiOptions") == 0, true); | ||||
| } | } | ||||
| if (fLastMsgTimer > 0) | |||||
| --fLastMsgTimer; | |||||
| if (std::strcmp(msg, "control") == 0) | if (std::strcmp(msg, "control") == 0) | ||||
| { | { | ||||
| uint32_t index; | uint32_t index; | ||||
| @@ -284,15 +288,23 @@ bool CarlaBridgeUI::init(const int argc, const char* argv[]) | |||||
| if (! initPipeClient(argv)) | if (! initPipeClient(argv)) | ||||
| return false; | return false; | ||||
| // wait for ui options, FIXME | |||||
| for (int i=0; i<20 && ! fGotOptions; ++i) | |||||
| fLastMsgTimer = 0; | |||||
| // wait for ui options | |||||
| for (; ++fLastMsgTimer < 50 && ! fGotOptions;) | |||||
| { | { | ||||
| idlePipe(true); | idlePipe(true); | ||||
| carla_msleep(100); | |||||
| carla_msleep(20); | |||||
| } | } | ||||
| if (! fGotOptions) | if (! fGotOptions) | ||||
| { | { | ||||
| carla_stderr2("CarlaBridgeUI::init() - did not get options on time, quitting..."); | |||||
| { | |||||
| const CarlaMutexLocker cml(getPipeLock()); | |||||
| writeMessage("exiting\n", 8); | |||||
| flushMessages(); | |||||
| } | |||||
| closePipeClient(); | closePipeClient(); | ||||
| return false; | return false; | ||||
| } | } | ||||
| @@ -142,6 +142,7 @@ public: | |||||
| protected: | protected: | ||||
| bool fQuitReceived; | bool fQuitReceived; | ||||
| bool fGotOptions; | bool fGotOptions; | ||||
| int fLastMsgTimer; | |||||
| CarlaBridgeToolkit* fToolkit; | CarlaBridgeToolkit* fToolkit; | ||||
| lib_t fLib; | lib_t fLib; | ||||