summaryrefslogtreecommitdiff
path: root/gtk2_ardour/windows_vst_plugin_ui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-02-21 18:00:12 +0100
committerRobin Gareus <robin@gareus.org>2014-02-22 03:11:48 +0100
commitdfeb68aeb4cfb23b335e3a171314b78327d832e3 (patch)
tree0de9636e5cbf283c08e21b0da5eb0c8423ce8015 /gtk2_ardour/windows_vst_plugin_ui.cc
parent40aa7e5e9034321f8af0b3067bd5f3005c537d5d (diff)
Windows VST GUI related rework
Diffstat (limited to 'gtk2_ardour/windows_vst_plugin_ui.cc')
-rw-r--r--gtk2_ardour/windows_vst_plugin_ui.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk2_ardour/windows_vst_plugin_ui.cc b/gtk2_ardour/windows_vst_plugin_ui.cc
index e902b63860..72e9952dec 100644
--- a/gtk2_ardour/windows_vst_plugin_ui.cc
+++ b/gtk2_ardour/windows_vst_plugin_ui.cc
@@ -25,7 +25,13 @@
#include "windows_vst_plugin_ui.h"
+#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
+#elif defined GDK_WINDOWING_WIN32
+#include <gdk/gdkwin32.h>
+#elif defined GDK_WINDOWING_QUARTZ
+/* not yet supported */
+#endif
using namespace Gtk;
using namespace ARDOUR;
@@ -34,7 +40,17 @@ using namespace PBD;
WindowsVSTPluginUI::WindowsVSTPluginUI (boost::shared_ptr<PluginInsert> pi, boost::shared_ptr<VSTPlugin> vp)
: VSTPluginUI (pi, vp)
{
+
+#ifdef GDK_WINDOWING_WIN32
+ GtkWindow* wobj = win->gobj();
+ gtk_widget_realize(GTK_WIDGET(wobj));
+ void* hWndHost = gdk_win32_drawable_get_handle(GTK_WIDGET(wobj)->window);
+
+ fst_run_editor (_vst->state(), hWndHost);
+#else
fst_run_editor (_vst->state(), NULL);
+#endif
+
pack_start (plugin_analysis_expander, true, true);
}
@@ -108,6 +124,7 @@ WindowsVSTPluginUI::get_XID ()
return _vst->state()->xid;
}
+#ifdef GDK_WINDOWING_X11
typedef int (*error_handler_t)( Display *, XErrorEvent *);
static Display *the_gtk_display;
static error_handler_t wine_error_handler;
@@ -124,13 +141,17 @@ fst_xerror_handler (Display* disp, XErrorEvent* ev)
return wine_error_handler (disp, ev);
}
}
+#endif
void
windows_vst_gui_init (int *argc, char **argv[])
{
- wine_error_handler = XSetErrorHandler (NULL);
gtk_init (argc, argv);
+
+#ifdef GDK_WINDOWING_X11
+ wine_error_handler = XSetErrorHandler (NULL);
the_gtk_display = gdk_x11_display_get_xdisplay (gdk_display_get_default());
gtk_error_handler = XSetErrorHandler (fst_xerror_handler);
+#endif
}