Subversion Repositories freemyipod

Rev

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

Rev 678 Rev 695
Line 35... Line 35...
35
    data->rendererdata = malloc(sizeof(struct chooser_renderer_iconflow_data));
35
    data->rendererdata = malloc(sizeof(struct chooser_renderer_iconflow_data));
36
    if (!data->rendererdata) return -2;
36
    if (!data->rendererdata) return -2;
37
    struct chooser_renderer_iconflow_data* rdata;
37
    struct chooser_renderer_iconflow_data* rdata;
38
    rdata = (struct chooser_renderer_iconflow_data*)(data->rendererdata);
38
    rdata = (struct chooser_renderer_iconflow_data*)(data->rendererdata);
39
    rdata->viewposition = params->startposition * data->info->actionhandler->stepsperitem(data);
39
    rdata->viewposition = params->startposition * data->info->actionhandler->stepsperitem(data);
40
    rdata->accumulator = 0;
40
    rdata->accumulator = 0;
41
    rdata->lastupdate = USEC_TIMER;
41
    rdata->lastupdate = USEC_TIMER;
42
    return 0;
42
    return 0;
43
}
43
}
44
 
44
 
45
static void chooser_renderer_iconflow_geticondata(int x, int y, int w, int h, int siv,
45
static void chooser_renderer_iconflow_geticondata(int x, int y, int w, int h, int siv,
Line 58... Line 58...
58
    params = (const struct chooser_renderer_iconflow_params*)(data->info->rendererparams);
58
    params = (const struct chooser_renderer_iconflow_params*)(data->info->rendererparams);
59
    struct chooser_renderer_iconflow_data* rdata;
59
    struct chooser_renderer_iconflow_data* rdata;
60
    rdata = (struct chooser_renderer_iconflow_data*)(data->rendererdata);
60
    rdata = (struct chooser_renderer_iconflow_data*)(data->rendererdata);
61
    long time = USEC_TIMER;
61
    long time = USEC_TIMER;
62
    long timediff = time - rdata->lastupdate;
62
    long timediff = time - rdata->lastupdate;
-
 
63
    if (!timediff) timediff = 1;
-
 
64
    int distance;
63
    int distance = data->position - rdata->viewposition;
65
    if (!rdata->lastupdate) distance = 0;
64
    if (distance) rc = CHOOSER_RESULT_REDRAW;
66
    else distance = data->position - rdata->viewposition;
65
    int factor = params->smoothness / timediff + 1;
67
    int factor = params->smoothness / timediff;
-
 
68
    if (!factor) factor = 1;
66
    rdata->accumulator += distance;
69
    rdata->accumulator += distance;
67
    distance = rdata->accumulator / factor;
70
    distance = rdata->accumulator / factor;
68
    rdata->accumulator -= distance * factor;
71
    rdata->accumulator -= distance * factor;
69
    rdata->viewposition += distance;
72
    rdata->viewposition += distance;
70
    rdata->lastupdate = time;
73
    rdata->lastupdate = time;
-
 
74
    if (data->position - rdata->viewposition) rc = CHOOSER_RESULT_REDRAW;
-
 
75
    else rdata->lastupdate = 0;
71
    if (params->copy_dest.buf.addr == params->fill_dest.loc.buf.addr
76
    if (params->copy_dest.buf.addr == params->fill_dest.loc.buf.addr
72
     && params->copy_dest.buf.stride == params->fill_dest.loc.buf.stride
77
     && params->copy_dest.buf.stride == params->fill_dest.loc.buf.stride
73
     && params->copy_dest.pos.x == params->fill_dest.loc.pos.x
78
     && params->copy_dest.pos.x == params->fill_dest.loc.pos.x
74
     && params->copy_dest.pos.y == params->fill_dest.loc.pos.y
79
     && params->copy_dest.pos.y == params->fill_dest.loc.pos.y
75
     && params->copy_src.size.x == params->fill_dest.size.x
80
     && params->copy_src.size.x == params->fill_dest.size.x