Code cleanup in the timeout handler
This commit is contained in:
parent
32d1d2fbfb
commit
c1f82c9743
|
@ -429,38 +429,52 @@ static void _out_rate(Progress * p)
|
||||||
|
|
||||||
|
|
||||||
/* progress_timeout */
|
/* progress_timeout */
|
||||||
|
static void _timeout_done(Progress * progress);
|
||||||
|
static void _timeout_speed(Progress * progress);
|
||||||
|
static void _timeout_progress(Progress * progress);
|
||||||
|
|
||||||
static gboolean _progress_timeout(gpointer data)
|
static gboolean _progress_timeout(gpointer data)
|
||||||
{
|
{
|
||||||
Progress * progress = data;
|
Progress * progress = data;
|
||||||
struct timeval tv;
|
|
||||||
|
_timeout_done(progress);
|
||||||
|
_timeout_speed(progress);
|
||||||
|
_timeout_progress(progress);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _timeout_done(Progress * progress)
|
||||||
|
{
|
||||||
double cnt = progress->cnt / 1024;
|
double cnt = progress->cnt / 1024;
|
||||||
double rate = progress->prefs->length / 1024;
|
double total = progress->prefs->length / 1024;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
char const * unit = "kB";
|
char const * unit = "kB";
|
||||||
|
|
||||||
if(progress->pulse == 1)
|
|
||||||
{
|
|
||||||
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progress->progress));
|
|
||||||
progress->pulse = 0;
|
|
||||||
}
|
|
||||||
if(progress->cnt == 0)
|
|
||||||
{
|
|
||||||
gtk_label_set_text(GTK_LABEL(progress->speed), "0.0 kB/s");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
if(progress->prefs->length > 1048576 || progress->cnt > 1048576)
|
if(progress->prefs->length > 1048576 || progress->cnt > 1048576)
|
||||||
{
|
{
|
||||||
cnt /= 1024;
|
cnt /= 1024;
|
||||||
rate /= 1024;
|
total /= 1024;
|
||||||
unit = "MB";
|
unit = "MB";
|
||||||
}
|
}
|
||||||
if(progress->prefs->length == 0)
|
if(progress->prefs->length == 0)
|
||||||
snprintf(buf, sizeof(buf), "%.1f %s", cnt, unit);
|
snprintf(buf, sizeof(buf), "%.1f %s", cnt, unit);
|
||||||
else
|
else
|
||||||
snprintf(buf, sizeof(buf), "%.1f of %.1f %s", cnt, rate, unit);
|
snprintf(buf, sizeof(buf), "%.1f of %.1f %s", cnt, total, unit);
|
||||||
gtk_label_set_text(GTK_LABEL(progress->done), buf);
|
gtk_label_set_text(GTK_LABEL(progress->done), buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _timeout_speed(Progress * progress)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
double rate;
|
||||||
|
char buf[16];
|
||||||
|
char const * unit = "kB";
|
||||||
|
|
||||||
if(gettimeofday(&tv, NULL) != 0)
|
if(gettimeofday(&tv, NULL) != 0)
|
||||||
return _progress_error("gettimeofday", FALSE);
|
{
|
||||||
|
_progress_error("gettimeofday", FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if((tv.tv_sec = tv.tv_sec - progress->tv.tv_sec) < 0)
|
if((tv.tv_sec = tv.tv_sec - progress->tv.tv_sec) < 0)
|
||||||
tv.tv_sec = 0;
|
tv.tv_sec = 0;
|
||||||
if((tv.tv_usec = tv.tv_usec - progress->tv.tv_usec) < 0)
|
if((tv.tv_usec = tv.tv_usec - progress->tv.tv_usec) < 0)
|
||||||
|
@ -477,7 +491,14 @@ static gboolean _progress_timeout(gpointer data)
|
||||||
}
|
}
|
||||||
snprintf(buf, sizeof(buf), "%.1f %s/s", rate, unit);
|
snprintf(buf, sizeof(buf), "%.1f %s/s", rate, unit);
|
||||||
gtk_label_set_text(GTK_LABEL(progress->speed), buf);
|
gtk_label_set_text(GTK_LABEL(progress->speed), buf);
|
||||||
return TRUE;
|
}
|
||||||
|
|
||||||
|
static void _timeout_progress(Progress * progress)
|
||||||
|
{
|
||||||
|
if(progress->pulse != 1)
|
||||||
|
return; /* setting the fraction is done somewhere else */
|
||||||
|
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progress->progress));
|
||||||
|
progress->pulse = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user