mirror of
https://github.com/lbonn/rofi
synced 2024-11-15 08:37:17 +00:00
Add some ui benchmark code
This commit is contained in:
parent
865821f829
commit
2ccc65ff52
4 changed files with 51 additions and 2 deletions
|
@ -161,5 +161,7 @@ Settings config = {
|
||||||
.cache_dir = NULL,
|
.cache_dir = NULL,
|
||||||
.window_thumbnail = FALSE,
|
.window_thumbnail = FALSE,
|
||||||
.drun_use_desktop_cache = FALSE,
|
.drun_use_desktop_cache = FALSE,
|
||||||
.drun_reload_desktop_cache = FALSE
|
.drun_reload_desktop_cache = FALSE,
|
||||||
|
/** Benchmarks */
|
||||||
|
.benchmark_ui = FALSE
|
||||||
};
|
};
|
||||||
|
|
|
@ -196,6 +196,9 @@ typedef struct
|
||||||
/** drun cache */
|
/** drun cache */
|
||||||
gboolean drun_use_desktop_cache;
|
gboolean drun_use_desktop_cache;
|
||||||
gboolean drun_reload_desktop_cache;
|
gboolean drun_reload_desktop_cache;
|
||||||
|
|
||||||
|
/** Benchmark */
|
||||||
|
gboolean benchmark_ui;
|
||||||
} Settings;
|
} Settings;
|
||||||
/** Global Settings structure. */
|
/** Global Settings structure. */
|
||||||
extern Settings config;
|
extern Settings config;
|
||||||
|
|
|
@ -1094,6 +1094,9 @@ int main ( int argc, char *argv[] )
|
||||||
if ( find_arg_uint ( "-record-screenshots", &interval ) ) {
|
if ( find_arg_uint ( "-record-screenshots", &interval ) ) {
|
||||||
g_timeout_add ( 1000 / (double) interval, record, NULL );
|
g_timeout_add ( 1000 / (double) interval, record, NULL );
|
||||||
}
|
}
|
||||||
|
if ( find_arg ( "-benchmark-ui" ) >= 0 ) {
|
||||||
|
config.benchmark_ui = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
rofi_view_workers_initialize ();
|
rofi_view_workers_initialize ();
|
||||||
rofi_icon_fetcher_init ( );
|
rofi_icon_fetcher_init ( );
|
||||||
|
|
|
@ -223,6 +223,47 @@ void rofi_capture_screenshot ( void )
|
||||||
g_date_time_unref ( now );
|
g_date_time_unref ( now );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Code used for benchmarking drawing the gui, this will keep updating the UI as fast as possible.
|
||||||
|
*/
|
||||||
|
gboolean do_bench = TRUE;
|
||||||
|
struct {
|
||||||
|
GTimer *time;
|
||||||
|
uint64_t draws;
|
||||||
|
double last_ts;
|
||||||
|
double min;
|
||||||
|
} BenchMark = {
|
||||||
|
.time = NULL,
|
||||||
|
.draws = 0,
|
||||||
|
.last_ts = 0.0,
|
||||||
|
.min = G_MAXDOUBLE
|
||||||
|
};
|
||||||
|
|
||||||
|
static gboolean bench_update ( void )
|
||||||
|
{
|
||||||
|
if ( !config.benchmark_ui ) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
BenchMark.draws++;
|
||||||
|
if ( BenchMark.time == NULL ) {
|
||||||
|
BenchMark.time = g_timer_new();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( (BenchMark.draws & 1023) == 0 ){
|
||||||
|
double ts = g_timer_elapsed(BenchMark.time, NULL);
|
||||||
|
double fps = 1024/(ts-BenchMark.last_ts);
|
||||||
|
|
||||||
|
if ( fps < BenchMark.min ) {
|
||||||
|
BenchMark.min = fps;
|
||||||
|
}
|
||||||
|
printf("current: %.2f fps, avg: %.2f fps, min: %.2f fps, %lu draws\r\n", fps, BenchMark.draws/ts, BenchMark.min, BenchMark.draws);
|
||||||
|
|
||||||
|
BenchMark.last_ts = ts;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean rofi_view_repaint ( G_GNUC_UNUSED void * data )
|
static gboolean rofi_view_repaint ( G_GNUC_UNUSED void * data )
|
||||||
{
|
{
|
||||||
if ( current_active_menu ) {
|
if ( current_active_menu ) {
|
||||||
|
@ -238,7 +279,7 @@ static gboolean rofi_view_repaint ( G_GNUC_UNUSED void * data )
|
||||||
TICK_N ( "flush" );
|
TICK_N ( "flush" );
|
||||||
CacheState.repaint_source = 0;
|
CacheState.repaint_source = 0;
|
||||||
}
|
}
|
||||||
return G_SOURCE_REMOVE;
|
return (bench_update () == TRUE )? G_SOURCE_CONTINUE:G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rofi_view_update_prompt ( RofiViewState *state )
|
static void rofi_view_update_prompt ( RofiViewState *state )
|
||||||
|
|
Loading…
Reference in a new issue