source: titan/titan/spinner.h @ 10994

Last change on this file since 10994 was 10255, checked in by obi, 13 years ago

next fix

File size: 2.0 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"), _("EXIT"), getrcconfigint("rcexit", NULL), _("KILL"), getrcconfigint("rcred", NULL), _("BOOT"), getrcconfigint("rcpower", NULL), NULL, 0, 600, 400, 0, 0);
19                        if(rcret == 2)
20                                system(KILLPROG);
21                        if(rcret == 3)
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 = saverect(spinner->rposx, spinner->rposy, spinner->rwidth, spinner->rheight);
75
76        drawscreen(spinner, 2);
77        usleep(status.spinnerspeed * 10000);
78        clearscreennolock(spinner);
79
80        //restore bg
81        restorerect(bg, spinner->rposx, spinner->rposy, spinner->rwidth, spinner->rheight);
82        blitfb();
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.