Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(428)

Unified Diff: tools/viewer/sk_app/mac/main_mac.cpp

Issue 2210603003: Get Mac viewer working with SDL (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix patch Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/viewer/sk_app/mac/Window_mac.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c7040b5adb6383b73efc44e8701953110ea6054c 100644
--- a/tools/viewer/sk_app/mac/main_mac.cpp
+++ b/tools/viewer/sk_app/mac/main_mac.cpp
@@ -7,69 +7,50 @@
#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:
+ done = sk_app::Window_mac::HandleWindowEvent(event);
+ break;
+
+ case SDL_QUIT:
done = true;
- }
- break;
- }
+ break;
+
+ default:
+ break;
+ }
}
- }
+ app->onIdle();
+ }
delete app;
- XCloseDisplay(display);
-#endif
-
+ SDL_Quit();
+
return 0;
}
« no previous file with comments | « tools/viewer/sk_app/mac/Window_mac.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698