Chromium Code Reviews| Index: tools/viewer/sk_app/mac/main_mac.cpp |
| diff --git a/tools/viewer/sk_app/mac/main_mac.cpp b/tools/viewer/sk_app/mac/main_mac.cpp |
| index 94bc99e01e7f564353d8fdb29ebd050becd6949e..9c3ad0a5adf8b96762169e94bfa35bf7fa145118 100644 |
| --- a/tools/viewer/sk_app/mac/main_mac.cpp |
| +++ b/tools/viewer/sk_app/mac/main_mac.cpp |
| @@ -7,69 +7,53 @@ |
| #include "SkTypes.h" |
| #include "SkTHash.h" |
| +#include "SDL.h" |
| #include "Timer.h" |
| #include "Window_mac.h" |
| #include "../Application.h" |
| using sk_app::Application; |
| -int main(int argc, char**argv) { |
| -#if 0 |
| - // TODO: use Mac main loop |
| - |
| - Display* display = XOpenDisplay(nullptr); |
| - |
| - Application* app = Application::Create(argc, argv, (void*)display); |
| +int main(int argc, char* argv[]) { |
| + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) { |
| + SkDebugf("Could not initialize SDL!\n"); |
| + return 1; |
| + } |
| - // Get the file descriptor for the X display |
| - int x11_fd = ConnectionNumber(display); |
| - fd_set in_fds; |
| + Application* app = Application::Create(argc, argv, nullptr); |
| - SkTHashSet<sk_app::Window_mac*> pendingWindows; |
| + SDL_Event event; |
| bool done = false; |
| while (!done) { |
| - // Create a file description set containing x11_fd |
| - FD_ZERO(&in_fds); |
| - FD_SET(x11_fd, &in_fds); |
| - |
| - // Set a sleep timer |
| - struct timeval tv; |
| - tv.tv_usec = 100; |
| - tv.tv_sec = 0; |
| - |
| - // Wait for an event on the file descriptor or for timer expiration |
| - (void) select(1, &in_fds, NULL, NULL, &tv); |
| - |
| - // Handle XEvents (if any) and flush the input |
| - XEvent event; |
| - while (XPending(display) && !done) { |
| - XNextEvent(display, &event); |
| - |
| - sk_app::Window_mac* win = sk_app::Window_mac::gWindowMap.find(event.xany.window); |
| - // paint and resize events get collapsed |
| + while (SDL_PollEvent(&event)) { |
| switch (event.type) { |
| - case Expose: |
| - win->markPendingPaint(); |
| - pendingWindows.add(win); |
| - break; |
| - case ConfigureNotify: |
| - win->markPendingResize(event.xconfigurerequest.width, |
| - event.xconfigurerequest.height); |
| - pendingWindows.add(win); |
| - break; |
| - default: |
| - if (win->handleEvent(event)) { |
| + // events handled by the windows |
| + case SDL_WINDOWEVENT: |
| + case SDL_MOUSEMOTION: |
| + case SDL_MOUSEBUTTONDOWN: |
| + case SDL_MOUSEBUTTONUP: |
| + case SDL_KEYDOWN: |
| + case SDL_KEYUP: { |
|
robertphillips
2016/08/03 21:22:05
overlength ?
jvanverth1
2016/08/04 15:28:33
Done.
|
| + sk_app::Window_mac* win = sk_app::Window_mac::gWindowMap.find(event.window.windowID); |
| + if (win && win->handleEvent(event)) { |
| + done = true; |
| + } |
| + } break; |
| + |
| + case SDL_QUIT: |
| done = true; |
| - } |
| - break; |
| - } |
| + break; |
| + |
| + default: |
| + break; |
| + } |
| } |
| - } |
| + app->onIdle(); |
| + } |
| delete app; |
| - XCloseDisplay(display); |
| -#endif |
| - |
| + SDL_Quit(); |
| + |
| return 0; |
| } |