source: titan/titan/spinner.h @ 14611

Last change on this file since 14611 was 14082, checked in by nit, 12 years ago

[titan] first step anim screens

File size: 1.9 KB
Line 
1#ifndef SPINNER_H
2#define SPINNER_H
3
4void checkspinner()
5{
6        debug(1000, "in");
7        time_t sec = time(NULL);
8        int rcret = 0;
9
10        while(status.sec != 0 && sec - status.sec > status.spinnertime && sec - status.sec < 86400)
11        {
12                screenspinner();
13                sec = time(NULL);
14
15                if(status.sec != 0 && status.hangtime > 0 && sec - status.sec > status.spinnertime + status.hangtime && sec - status.sec < 86400)
16                {
17                        status.sec = sec - status.spinnertime - 1;
18                        rcret = textbox(_("Message"), _("Detect hanging System !!!\n\nKILL = Red\nBOOT = Power"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), _("KILL"), getrcconfigint("rcred", NULL), _("BOOT"), getrcconfigint("rcpower", NULL), 600, 400, 0, 0);
19                        if(rcret == 3)
20                                system(KILLPROG);
21                        if(rcret == 4)
22                                system(REBOOT);
23                }
24        }
25
26        debug(1000, "out");
27}
28
29void screenspinner()
30{
31        struct skin* framebuffer = getscreen("framebuffer");
32        struct skin* spinner = getscreen("spinner");
33        struct skin* node = NULL;
34        int count = 0, treffer = 0, tmpscreencalc = 0;
35        char* bg = NULL;
36
37        if(spinner == NULL)
38        {
39                usleep(status.spinnerspeed * 10000);
40                return;
41        }
42
43        node = spinner->child;
44        status.spinner++;
45
46findspinner:
47        while(node != NULL)
48        {
49                if(strncmp("spinner", node->name, 7) == 0)
50                        count++;
51                if(count == status.spinner)
52                {
53                        node->hidden = NO;
54                        treffer = 1;
55                }
56                else
57                        node->hidden = YES;
58
59                node = node->next;
60        }
61        if(treffer == 0 && status.spinner != 1)
62        {
63                count = 0;
64                status.spinner = 1;
65                node = spinner->child;
66                goto findspinner;
67        }
68
69        //save bg
70        m_lock(&status.drawingmutex, 0);
71        tmpscreencalc = status.screencalc;
72        status.screencalc = 0;
73        setnodeattr(spinner, framebuffer);
74        bg = savescreen(spinner);
75
76        drawscreen(spinner, 2);
77        usleep(status.spinnerspeed * 10000);
78        clearscreennolock(spinner);
79
80        //restore bg
81        restorescreen(bg, spinner);
82        blitfb(0);
83        status.screencalc = tmpscreencalc;
84        m_unlock(&status.drawingmutex, 0);
85        usleep(1000);
86}
87
88#endif
Note: See TracBrowser for help on using the repository browser.