X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Flibrary.c;h=3152eca3674537dfe951f616135fe278ebce6589;hb=499664bbfa646b6280553d1dc2dfb71db8c2e4d9;hp=d36fa0a6c9b77070e293d6a0c542512c06c89651;hpb=216de253be765b658191eea63fe6bb1566b10b46;p=omnplay diff --git a/src/library.c b/src/library.c index d36fa0a..3152eca 100644 --- a/src/library.c +++ b/src/library.c @@ -32,9 +32,9 @@ #include "ui.h" #include "timecode.h" -void omnplay_library_load(omnplay_instance_t* app) +static void omnplay_library_load_file(playlist_item_t* items, int *pcount, char* filename) { - int i; + int i, c = 0; FILE* f; char *l; playlist_item_t item; @@ -42,12 +42,10 @@ void omnplay_library_load(omnplay_instance_t* app) /* allocate space for strings and items */ l = malloc(PATH_MAX); - pthread_mutex_lock(&app->library.lock); - - app->library.count = 0; + *pcount = 0; /* open and process file */ - if(app->library.filename[0] && (f = fopen(app->library.filename, "rt"))) + if((f = fopen(filename, "rt"))) { while( !feof(f) ) { @@ -78,47 +76,78 @@ void omnplay_library_load(omnplay_instance_t* app) }; /* insert item */ - app->library.item[app->library.count++] = item; + items[c++] = item; }; } fclose(f); } - pthread_mutex_unlock(&app->library.lock); - /* free data */ free(l); + *pcount = c; +}; + +void omnplay_library_load(omnplay_instance_t* app) +{ + pthread_mutex_lock(&app->library.lock); + + if(app->library.filename[0]) + omnplay_library_load_file(app->library.item, &app->library.count, app->library.filename); + + pthread_mutex_unlock(&app->library.lock); + omnplay_library_draw(app); }; -void omnplay_library_save(omnplay_instance_t* app) +static void omnplay_library_save_file(playlist_item_t* item, int count, char* filename) { int i; FILE* f; - pthread_mutex_lock(&app->library.lock); - - if(app->library.filename[0] && (f = fopen(app->library.filename, "wt"))) + if((f = fopen(filename, "wt"))) { char tc_in[32], tc_dur[32]; - for(i = 0; i < app->library.count; i++) + for(i = 0; i < count; i++) fprintf(f, "%s\t%s\t%s\t%s\n", - app->library.item[i].id, - frames2tc(app->library.item[i].in, 25.0, tc_in), - frames2tc(app->library.item[i].dur, 25.0, tc_dur), - app->library.item[i].title); + item[i].id, + frames2tc(item[i].in, 25.0, tc_in), + frames2tc(item[i].dur, 25.0, tc_dur), + item[i].title); fclose(f); }; +}; + +void omnplay_library_save(omnplay_instance_t* app) +{ + pthread_mutex_lock(&app->library.lock); + + if(app->library.filename[0]) + omnplay_library_save_file(app->library.item, app->library.count, + app->library.filename); pthread_mutex_unlock(&app->library.lock); }; +static void omnplay_get_content_cb(omnplay_instance_t* app, playlist_item_t* item, void* data) +{ + fprintf(stderr, "requested: id=[%s]\n", item->id); +}; + void omnplay_library_refresh(omnplay_instance_t* app) { + int count; + playlist_item_t* items; + + + items = (playlist_item_t*)malloc(sizeof(playlist_item_t) * MAX_LIBRARY_ITEMS); + + count = omnplay_get_content(app, items, MAX_LIBRARY_ITEMS, omnplay_get_content_cb, NULL); + + free(items); }; void omnplay_library_draw(omnplay_instance_t* app)