win32 gui :-)
This commit is contained in:
parent
d8b5016960
commit
7c6589302a
@ -868,7 +868,9 @@ typedef struct controller {
|
|||||||
static Steinberg_Vst_IEditControllerVtbl controllerVtblIEditController;
|
static Steinberg_Vst_IEditControllerVtbl controllerVtblIEditController;
|
||||||
|
|
||||||
#ifdef DATA_UI
|
#ifdef DATA_UI
|
||||||
|
|
||||||
# ifdef __linux__
|
# ifdef __linux__
|
||||||
|
|
||||||
# include <X11/Xlib.h>
|
# include <X11/Xlib.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -933,11 +935,18 @@ static Steinberg_ITimerHandlerVtbl timerHandlerVtblITimerHandler = {
|
|||||||
/* ITimerHandler */
|
/* ITimerHandler */
|
||||||
/* .onTimer = */ timerHandlerOnTimer
|
/* .onTimer = */ timerHandlerOnTimer
|
||||||
};
|
};
|
||||||
|
|
||||||
# elif defined(__APPLE__)
|
# elif defined(__APPLE__)
|
||||||
|
|
||||||
# include <CoreFoundation/CoreFoundation.h>
|
# include <CoreFoundation/CoreFoundation.h>
|
||||||
# include <objc/objc.h>
|
# include <objc/objc.h>
|
||||||
# include <objc/runtime.h>
|
# include <objc/runtime.h>
|
||||||
# include <objc/message.h>
|
# include <objc/message.h>
|
||||||
|
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
|
||||||
|
# include <windows.h>
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
typedef struct plugView {
|
typedef struct plugView {
|
||||||
@ -952,6 +961,8 @@ typedef struct plugView {
|
|||||||
Display * display;
|
Display * display;
|
||||||
# elif defined(__APPLE__)
|
# elif defined(__APPLE__)
|
||||||
CFRunLoopTimerRef timer;
|
CFRunLoopTimerRef timer;
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
UINT_PTR timer;
|
||||||
# endif
|
# endif
|
||||||
} plugView;
|
} plugView;
|
||||||
|
|
||||||
@ -1008,7 +1019,7 @@ static Steinberg_tresult plugViewIsPlatformTypeSupported(void* thisInterface, St
|
|||||||
(void)thisInterface;
|
(void)thisInterface;
|
||||||
|
|
||||||
TRACE("plugView isPlatformTypeSupported %p %s\n", thisInterface, type);
|
TRACE("plugView isPlatformTypeSupported %p %s\n", thisInterface, type);
|
||||||
# if defined(_WIN32)
|
# if defined(_WIN32) || defined(__CYGWIN__)
|
||||||
return strcmp(type, "HWND") ? Steinberg_kResultFalse : Steinberg_kResultTrue;
|
return strcmp(type, "HWND") ? Steinberg_kResultFalse : Steinberg_kResultTrue;
|
||||||
# elif defined(__APPLE__) && defined(__MACH__)
|
# elif defined(__APPLE__) && defined(__MACH__)
|
||||||
return strcmp(type, "NSView") ? Steinberg_kResultFalse : Steinberg_kResultTrue;
|
return strcmp(type, "NSView") ? Steinberg_kResultFalse : Steinberg_kResultTrue;
|
||||||
@ -1051,6 +1062,14 @@ static void plugViewTimerCb(CFRunLoopTimerRef timer, void *info) {
|
|||||||
|
|
||||||
plugin_ui_idle(((plugView *)info)->ui);
|
plugin_ui_idle(((plugView *)info)->ui);
|
||||||
}
|
}
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
static void plugViewTimerCb(HWND p1, UINT p2, UINT_PTR p3, DWORD p4) {
|
||||||
|
(void)p1;
|
||||||
|
(void)p2;
|
||||||
|
(void)p4;
|
||||||
|
|
||||||
|
plugin_ui_idle(((plugView *)p3)->ui);
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
static Steinberg_tresult plugViewAttached(void* thisInterface, void* parent, Steinberg_FIDString type) {
|
static Steinberg_tresult plugViewAttached(void* thisInterface, void* parent, Steinberg_FIDString type) {
|
||||||
@ -1097,6 +1116,13 @@ static Steinberg_tresult plugViewAttached(void* thisInterface, void* parent, Ste
|
|||||||
};
|
};
|
||||||
v->timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 20.0 / 1000.0, 0, 0, plugViewTimerCb, &ctx);
|
v->timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 20.0 / 1000.0, 0, 0, plugViewTimerCb, &ctx);
|
||||||
CFRunLoopAddTimer(CFRunLoopGetCurrent(), v->timer, kCFRunLoopCommonModes);
|
CFRunLoopAddTimer(CFRunLoopGetCurrent(), v->timer, kCFRunLoopCommonModes);
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
v->timer = SetTimer((HWND)*((char **)v->ui), (UINT_PTR)v, 20, (TIMERPROC)plugViewTimerCb);
|
||||||
|
if (v->timer == 0) {
|
||||||
|
plugin_ui_free(v->ui);
|
||||||
|
v->ui = NULL;
|
||||||
|
return Steinberg_kResultFalse;
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
# if DATA_PRODUCT_PARAMETERS_N > 0
|
# if DATA_PRODUCT_PARAMETERS_N > 0
|
||||||
plugViewUpdateAllParameters(v);
|
plugViewUpdateAllParameters(v);
|
||||||
@ -1113,6 +1139,8 @@ static Steinberg_tresult plugViewRemoved(void* thisInterface) {
|
|||||||
# elif defined(__APPLE__)
|
# elif defined(__APPLE__)
|
||||||
CFRunLoopTimerInvalidate(v->timer);
|
CFRunLoopTimerInvalidate(v->timer);
|
||||||
CFRelease(v->timer);
|
CFRelease(v->timer);
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
KillTimer((HWND)(*((char **)v->ui)), (UINT_PTR)v);
|
||||||
# endif
|
# endif
|
||||||
plugin_ui_free(v->ui);
|
plugin_ui_free(v->ui);
|
||||||
v->ui = NULL;
|
v->ui = NULL;
|
||||||
@ -1188,6 +1216,8 @@ static Steinberg_tresult plugViewOnSize(void* thisInterface, struct Steinberg_Vi
|
|||||||
CGSize size = { newSize->right - newSize->left, newSize->bottom - newSize->top };
|
CGSize size = { newSize->right - newSize->left, newSize->bottom - newSize->top };
|
||||||
void (*f)(id, SEL, CGSize) = (void (*)(id, SEL, CGSize))objc_msgSend;
|
void (*f)(id, SEL, CGSize) = (void (*)(id, SEL, CGSize))objc_msgSend;
|
||||||
f((id)(*((char **)v->ui)), sel_getUid("setFrameSize:"), size);
|
f((id)(*((char **)v->ui)), sel_getUid("setFrameSize:"), size);
|
||||||
|
# elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
|
SetWindowPos((HWND)*((char **)v->ui), HWND_TOP, 0, 0, newSize->right - newSize->left, newSize->bottom - newSize->top, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOOWNERZORDER);
|
||||||
# endif
|
# endif
|
||||||
return Steinberg_kResultTrue;
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
@ -2021,7 +2051,7 @@ static Steinberg_IPluginFactory3Vtbl factoryVtbl = {
|
|||||||
};
|
};
|
||||||
static Steinberg_IPluginFactory3 factory = { &factoryVtbl };
|
static Steinberg_IPluginFactory3 factory = { &factoryVtbl };
|
||||||
|
|
||||||
#ifdef _WIN32
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||||
# define EXPORT __declspec(dllexport)
|
# define EXPORT __declspec(dllexport)
|
||||||
#else
|
#else
|
||||||
# define EXPORT __attribute__((visibility("default")))
|
# define EXPORT __attribute__((visibility("default")))
|
||||||
@ -2032,7 +2062,7 @@ Steinberg_IPluginFactory * GetPluginFactory(void) {
|
|||||||
return (Steinberg_IPluginFactory *)&factory;
|
return (Steinberg_IPluginFactory *)&factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if !defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
# if defined(__APPLE__)
|
# if defined(__APPLE__)
|
||||||
# define ENTRY bundleEntry
|
# define ENTRY bundleEntry
|
||||||
# define EXIT bundleExit
|
# define EXIT bundleExit
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with Tibia. If not, see <http://www.gnu.org/licenses/>.
|
* along with Tibia. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* File author: Stefano D'Angelo
|
* File author: Stefano D'Angelo, Paolo Marrone
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <pugl/pugl.h>
|
#include <pugl/pugl.h>
|
||||||
@ -141,6 +141,7 @@ static PuglStatus plugin_ui_on_event(PuglView *view, const PuglEvent *event) {
|
|||||||
{
|
{
|
||||||
plugin_ui *instance = (plugin_ui *)puglGetHandle(view);
|
plugin_ui *instance = (plugin_ui *)puglGetHandle(view);
|
||||||
plugin_ui_update_geometry(instance);
|
plugin_ui_update_geometry(instance);
|
||||||
|
puglPostRedisplay(instance->view);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PUGL_BUTTON_RELEASE:
|
case PUGL_BUTTON_RELEASE:
|
||||||
|
Loading…
Reference in New Issue
Block a user