Subversion Repositories freemyipod

Rev

Rev 686 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 686 Rev 820
Line 29... Line 29...
29
void chooser_button_handler(void* user, enum button_event event, int which, int value)
29
void chooser_button_handler(void* user, enum button_event event, int which, int value)
30
{
30
{
31
    struct chooser_data* data = (struct chooser_data*)user;
31
    struct chooser_data* data = (struct chooser_data*)user;
32
    switch (data->info->actionhandler->handleevent(data, event, which, value))
32
    switch (data->info->actionhandler->handleevent(data, event, which, value))
33
    {
33
    {
34
    case CHOOSER_RESULT_REDRAW:
34
        case CHOOSER_RESULT_REDRAW:
35
        mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
35
            mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
36
        data->redrawneeded = true;
36
            data->redrawneeded = true;
37
        wakeup_signal(&data->eventwakeup);
37
            wakeup_signal(&data->eventwakeup);
38
        mutex_unlock(&data->statemutex);
38
            mutex_unlock(&data->statemutex);
39
        break;
39
            break;
40
    case CHOOSER_RESULT_CANCEL:
40
        case CHOOSER_RESULT_CANCEL:
41
        mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
41
            mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
42
        data->canceled = true;
42
            data->canceled = true;
43
        wakeup_signal(&data->eventwakeup);
43
            wakeup_signal(&data->eventwakeup);
44
        mutex_unlock(&data->statemutex);
44
            mutex_unlock(&data->statemutex);
45
        break;
45
            break;
46
    case CHOOSER_RESULT_FINISHED:
46
        case CHOOSER_RESULT_FINISHED:
47
        mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
47
            mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
48
        data->finished = true;
48
            data->finished = true;
49
        wakeup_signal(&data->eventwakeup);
49
            wakeup_signal(&data->eventwakeup);
50
        mutex_unlock(&data->statemutex);
50
            mutex_unlock(&data->statemutex);
51
        break;
51
            break;
52
    }
52
    }
53
}
53
}
54
 
54
 
55
const struct chooser_item* chooser_run(const struct chooser_info* info)
55
const struct chooser_item* chooser_run(const struct chooser_info* info)
56
{
56
{
Line 97... Line 97...
97
        if ((long)(lasttick + info->tickinterval - USEC_TIMER) < 0)
97
        if ((long)(lasttick + info->tickinterval - USEC_TIMER) < 0)
98
        {
98
        {
99
            if (info->actionhandler->handletick)
99
            if (info->actionhandler->handletick)
100
                switch (info->actionhandler->handletick(&data))
100
                switch (info->actionhandler->handletick(&data))
101
                {
101
                {
102
                case CHOOSER_RESULT_REDRAW:
102
                    case CHOOSER_RESULT_REDRAW:
103
                    redrawneeded = true;
103
                        redrawneeded = true;
104
                    break;
104
                        break;
105
                case CHOOSER_RESULT_CANCEL:
105
                    case CHOOSER_RESULT_CANCEL:
106
                    goto cancel;
106
                        goto cancel;
107
                case CHOOSER_RESULT_FINISHED:
107
                    case CHOOSER_RESULT_FINISHED:
108
                    goto finished;
108
                        goto finished;
109
                }
109
                }
110
            lasttick = USEC_TIMER;
110
            lasttick = USEC_TIMER;
111
        }
111
        }
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;