Browse Source

Fix for custom gtk widgets, need to use global namespace

tags/v2.4.0
falkTX 4 years ago
parent
commit
7a9e8b692b
2 changed files with 8 additions and 4 deletions
  1. +4
    -2
      source/bridges-ui/CarlaBridgeToolkitGtk.cpp
  2. +4
    -2
      source/utils/CarlaLibUtils.hpp

+ 4
- 2
source/bridges-ui/CarlaBridgeToolkitGtk.cpp View File

@@ -160,6 +160,7 @@ struct GtkLoader {
# if defined(CARLA_OS_MAC) # if defined(CARLA_OS_MAC)
"libgtk-quartz-2.0.dylib", "libgtk-quartz-2.0.dylib",
"libgtk-x11-2.0.dylib", "libgtk-x11-2.0.dylib",
"/opt/homebrew/opt/gtk+/lib/libgtk-quartz-2.0.0.dylib",
"/opt/local/lib/libgtk-quartz-2.0.dylib", "/opt/local/lib/libgtk-quartz-2.0.dylib",
"/opt/local/lib/libgtk-x11-2.0.dylib", "/opt/local/lib/libgtk-x11-2.0.dylib",
# else # else
@@ -171,7 +172,7 @@ struct GtkLoader {
for (size_t i=0; i<sizeof(filenames)/sizeof(filenames[0]); ++i) for (size_t i=0; i<sizeof(filenames)/sizeof(filenames[0]); ++i)
{ {
filename = filenames[i]; filename = filenames[i];
if ((lib = lib_open(filename)) != nullptr)
if ((lib = lib_open(filename, true)) != nullptr)
break; break;
} }


@@ -303,8 +304,9 @@ public:
CARLA_SAFE_ASSERT_RETURN(gtkWindow != nullptr,); CARLA_SAFE_ASSERT_RETURN(gtkWindow != nullptr,);


GtkWidget* const widget((GtkWidget*)fPlugin->getWidget()); GtkWidget* const widget((GtkWidget*)fPlugin->getWidget());
gtk.container_add(GTK_CONTAINER(fWindow), widget);
CARLA_SAFE_ASSERT_RETURN(widget != nullptr,);


gtk.container_add(GTK_CONTAINER(fWindow), widget);
gtk.window_set_resizable(gtkWindow, options.isResizable); gtk.window_set_resizable(gtkWindow, options.isResizable);
gtk.window_set_title(gtkWindow, options.windowTitle.buffer()); gtk.window_set_title(gtkWindow, options.windowTitle.buffer());




+ 4
- 2
source/utils/CarlaLibUtils.hpp View File

@@ -35,15 +35,17 @@ typedef void* lib_t;
* May return null, in which case "lib_error" has the error. * May return null, in which case "lib_error" has the error.
*/ */
static inline static inline
lib_t lib_open(const char* const filename) noexcept
lib_t lib_open(const char* const filename, const bool global = false) noexcept
{ {
CARLA_SAFE_ASSERT_RETURN(filename != nullptr && filename[0] != '\0', nullptr); CARLA_SAFE_ASSERT_RETURN(filename != nullptr && filename[0] != '\0', nullptr);


try { try {
#ifdef CARLA_OS_WIN #ifdef CARLA_OS_WIN
return ::LoadLibraryA(filename); return ::LoadLibraryA(filename);
// unused
(void)global;
#else #else
return ::dlopen(filename, RTLD_NOW|RTLD_LOCAL);
return ::dlopen(filename, RTLD_NOW|(global ? RTLD_GLOBAL : RTLD_LOCAL));
#endif #endif
} CARLA_SAFE_EXCEPTION_RETURN("lib_open", nullptr); } CARLA_SAFE_EXCEPTION_RETURN("lib_open", nullptr);
} }


Loading…
Cancel
Save