From 518b685f39a29fe9939c2a94a6a06118a39acf42 Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Wed, 5 Oct 2011 16:45:42 +0300 Subject: [PATCH] limit rate of UI update during omneon content reading --- src/library.c | 4 +++- src/omnplay.cpp | 2 ++ src/omnplay.h | 2 ++ src/opts.c | 12 ++++++++++++ 4 files changed, 19 insertions(+), 1 deletions(-) diff --git a/src/library.c b/src/library.c index a7a44a4..c0bcb24 100644 --- a/src/library.c +++ b/src/library.c @@ -228,7 +228,9 @@ void omnplay_library_save(omnplay_instance_t* app) static void omnplay_get_content_cb(omnplay_instance_t* app, playlist_item_t* item, void* data) { - omnplay_set_status(app, item->id); + if(!(app->library.id_display_idx % app->library.id_display_rate)) + omnplay_set_status(app, item->id); + app->library.id_display_idx++; }; static void* omnplay_library_refresh_proc(void* data) diff --git a/src/omnplay.cpp b/src/omnplay.cpp index aa384e2..8eeffec 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -46,6 +46,8 @@ int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int lim OmPlrClipInfo clip_info; char clip_name[omPlrMaxClipDirLen]; + app->library.id_display_idx = 0; + pthread_mutex_lock(&app->players.lock); r = OmPlrClipGetFirst((OmPlrHandle)app->players.item[0].handle, clip_name, sizeof(clip_name)); diff --git a/src/omnplay.h b/src/omnplay.h index aad4ade..fe8d077 100644 --- a/src/omnplay.h +++ b/src/omnplay.h @@ -159,6 +159,8 @@ typedef struct omnplay_instance pthread_mutex_t lock; GThread* refresh_thread; GtkWidget *search; + int id_display_rate; + int id_display_idx; } library; struct { diff --git a/src/opts.c b/src/opts.c index eb2868b..4ae9206 100644 --- a/src/opts.c +++ b/src/opts.c @@ -37,6 +37,7 @@ static const struct option long_options [] = { "player", required_argument, NULL, '1'}, { "library", required_argument, NULL, '2'}, { "whois", required_argument, NULL, '3'}, + { "id-display-rate", required_argument, NULL, '4'}, { "help", no_argument, NULL, 'h'}, { 0, 0, 0, 0} }; @@ -48,6 +49,9 @@ int omnplay_opt(int argc, char** argv, omnplay_instance_t* app) char* p; int c, index = 0; + /* setup defaults */ + app->library.id_display_rate = 20; + /* reset datas */ optind = 0; opterr = 0; optopt = 0; @@ -91,6 +95,11 @@ int omnplay_opt(int argc, char** argv, omnplay_instance_t* app) strncpy(app->library.whois, optarg, PATH_MAX); break; + /** --id-display-rate */ + case '4': + app->library.id_display_rate = atol(optarg); + break; + default: fprintf(stderr, "ERROR: Incorrect argument!\n"); return 1; @@ -109,5 +118,8 @@ void omnplay_usage(void) "Usage:\n" "\t--directory= Directory to override default\n" "\t--player= Player to use in a form @\n" + "\t--whois= Whois service URL\n" + "\t--library= File used for library storage\n" + "\t--id-display-rate= Rate of id displaying during server content requesting\n" ); }; -- 1.7.4.4