blob: 108e9ac20688e05ccdfe278990b0ba4d50d2f0b5 [file] [log] [blame]
epoger@google.com5aab3402012-03-22 15:15:07 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8#include "X11/Xlib.h"
9#include "X11/keysym.h"
10
11#include "SkApplication.h"
12#include "SkEvent.h"
13#include "SkWindow.h"
14#include "SkTypes.h"
15
16#include <signal.h>
17#include <sys/time.h>
18
19SkOSWindow* gWindow;
20
21static void catch_alarm(int sig)
22{
23 SkEvent::ServiceQueueTimer();
24}
25
26int main(int argc, char** argv){
27 signal(SIGALRM, catch_alarm);
28
29 gWindow = create_sk_window(NULL, argc, argv);
30
31 // drain any events that occurred before gWindow was assigned.
32 while (SkEvent::ProcessEvent());
33
34 // Start normal Skia sequence
35 application_init();
36
37 gWindow->loop();
38
39 delete gWindow;
40 application_term();
41 return 0;
42}
43
44// SkEvent handlers
45
46void SkEvent::SignalNonEmptyQueue()
47{
48 if (gWindow) {
49 gWindow->post_linuxevent();
50 }
51}
52
53void SkEvent::SignalQueueTimer(SkMSec delay)
54{
55 itimerval newTimer;
56 newTimer.it_interval.tv_sec = 0;
57 newTimer.it_interval.tv_usec = 0;
58 newTimer.it_value.tv_sec = 0;
59 newTimer.it_value.tv_usec = delay * 1000;
60
61 setitimer(ITIMER_REAL, &newTimer, NULL);
62}