Subversion Repositories freemyipod

Rev

Rev 820 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 820 Rev 831
Line 90... Line 90...
90
        long sleeptime = lasttick + info->tickinterval - USEC_TIMER;
90
        long sleeptime = lasttick + info->tickinterval - USEC_TIMER;
91
        if (sleeptime > 0 && !redrawneeded) wakeup_wait(&data.eventwakeup, sleeptime);
91
        if (sleeptime > 0 && !redrawneeded) wakeup_wait(&data.eventwakeup, sleeptime);
92
        mutex_lock(&data.statemutex, TIMEOUT_BLOCK);
92
        mutex_lock(&data.statemutex, TIMEOUT_BLOCK);
93
        if (data.canceled) goto cancel;
93
        if (data.canceled) goto cancel;
94
        if (data.finished) goto finished;
94
        if (data.finished) goto finished;
95
        redrawneeded |= data.redrawneeded;
-
 
96
        data.redrawneeded = false;
-
 
97
        if ((long)(lasttick + info->tickinterval - USEC_TIMER) < 0)
95
        if ((long)(lasttick + info->tickinterval - USEC_TIMER) < 0)
98
        {
96
        {
99
            if (info->actionhandler->handletick)
97
            if (info->actionhandler->handletick)
100
                switch (info->actionhandler->handletick(&data))
98
                switch (info->actionhandler->handletick(&data))
101
                {
99
                {
Line 107... Line 105...
107
                    case CHOOSER_RESULT_FINISHED:
105
                    case CHOOSER_RESULT_FINISHED:
108
                        goto finished;
106
                        goto finished;
109
                }
107
                }
110
            lasttick = USEC_TIMER;
108
            lasttick = USEC_TIMER;
111
        }
109
        }
-
 
110
        redrawneeded |= data.redrawneeded;
-
 
111
        data.redrawneeded = false;
112
        mutex_unlock(&data.statemutex);
112
        mutex_unlock(&data.statemutex);
113
        if (redrawneeded) redrawneeded = info->renderer->render(&data) == CHOOSER_RESULT_REDRAW;
113
        if (redrawneeded) redrawneeded = info->renderer->render(&data) == CHOOSER_RESULT_REDRAW;
114
    }
114
    }
115
cancel:
115
cancel:
116
    data.selected = NULL;
116
    data.selected = NULL;