/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "X11/Xlib.h" #include "X11/keysym.h" #include "SkApplication.h" #include "SkEvent.h" #include "SkWindow.h" #include "SkTypes.h" #include #include SkOSWindow* gWindow; static void catch_alarm(int sig) { SkEvent::ServiceQueueTimer(); } int main(int argc, char** argv){ signal(SIGALRM, catch_alarm); gWindow = create_sk_window(NULL, argc, argv); // drain any events that occurred before gWindow was assigned. while (SkEvent::ProcessEvent()); // Start normal Skia sequence application_init(); gWindow->loop(); delete gWindow; application_term(); return 0; } // SkEvent handlers void SkEvent::SignalNonEmptyQueue() { if (gWindow) { gWindow->post_linuxevent(); } } void SkEvent::SignalQueueTimer(SkMSec delay) { itimerval newTimer; newTimer.it_interval.tv_sec = 0; newTimer.it_interval.tv_usec = 0; newTimer.it_value.tv_sec = 0; newTimer.it_value.tv_usec = delay * 1000; setitimer(ITIMER_REAL, &newTimer, NULL); }