mirror of https://github.com/buggins/dlangui.git
custom events, SDL platform support
This commit is contained in:
parent
414563de0c
commit
ed123e2fe2
|
|
@ -53,6 +53,8 @@ version (USE_OPENGL) {
|
||||||
// pragma(lib, "X11");
|
// pragma(lib, "X11");
|
||||||
// pragma(lib, "dl");
|
// pragma(lib, "dl");
|
||||||
|
|
||||||
|
private __gshared uint USER_EVENT_ID;
|
||||||
|
|
||||||
class SDLWindow : Window {
|
class SDLWindow : Window {
|
||||||
SDLPlatform _platform;
|
SDLPlatform _platform;
|
||||||
SDL_Window * _win;
|
SDL_Window * _win;
|
||||||
|
|
@ -78,6 +80,18 @@ class SDLWindow : Window {
|
||||||
destroy(_drawbuf);
|
destroy(_drawbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// post event to handle in UI thread (this method can be used from background thread)
|
||||||
|
override void postEvent(CustomEvent event) {
|
||||||
|
super.postEvent(event);
|
||||||
|
SDL_Event sdlevent;
|
||||||
|
sdlevent.user.type = USER_EVENT_ID;
|
||||||
|
sdlevent.user.code = cast(int)event.uniqueId;
|
||||||
|
sdlevent.user.windowID = windowId;
|
||||||
|
SDL_PushEvent(&sdlevent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
version(USE_OPENGL) {
|
version(USE_OPENGL) {
|
||||||
static private bool _gl3Reloaded = false;
|
static private bool _gl3Reloaded = false;
|
||||||
private SDL_GLContext _context;
|
private SDL_GLContext _context;
|
||||||
|
|
@ -931,6 +945,12 @@ class SDLPlatform : Platform {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// not supported event
|
// not supported event
|
||||||
|
if (event.type == USER_EVENT_ID) {
|
||||||
|
SDLWindow w = getWindow(event.user.windowID);
|
||||||
|
if (w) {
|
||||||
|
w.handlePostedEvent(cast(uint)event.user.code);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (_windowToClose) {
|
if (_windowToClose) {
|
||||||
|
|
@ -1122,6 +1142,9 @@ int sdlmain(string[] args) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
scope(exit)SDL_Quit();
|
scope(exit)SDL_Quit();
|
||||||
|
|
||||||
|
USER_EVENT_ID = SDL_RegisterEvents(1);
|
||||||
|
|
||||||
int request = SDL_GetDesktopDisplayMode(0,&displayMode);
|
int request = SDL_GetDesktopDisplayMode(0,&displayMode);
|
||||||
|
|
||||||
version(USE_OPENGL) {
|
version(USE_OPENGL) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue