limit rate of UI update during omneon content reading
authorMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 5 Oct 2011 13:45:42 +0000 (16:45 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 5 Oct 2011 13:45:42 +0000 (16:45 +0300)
src/library.c
src/omnplay.cpp
src/omnplay.h
src/opts.c

index a7a44a4..c0bcb24 100644 (file)
@@ -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)
index aa384e2..8eeffec 100644 (file)
@@ -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));
index aad4ade..fe8d077 100644 (file)
@@ -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
     {
index eb2868b..4ae9206 100644 (file)
@@ -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=<PATH> Directory to override default\n"
         "\t--player=<STRING>  Player to use in a form <player_name>@<mediadirector host>\n"
+        "\t--whois=<URL>      Whois service URL\n"
+        "\t--library=<PATH>   File used for library storage\n"
+        "\t--id-display-rate=<NUM> Rate of id displaying during server content requesting\n"
     );
 };