X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aft.c;h=6c07bcc2a13deb72985f7b87fb98c689c1c38a96;hp=63a40d790f602c81d6f28e71e02b6d46d907cd5d;hb=a61e862450dc1e74394bf5bbf7002d9947f98d31;hpb=1f12ea375358a0b30689e01efe82796ea4fcb14f diff --git a/aft.c b/aft.c index 63a40d79..6c07bcc2 100644 --- a/aft.c +++ b/aft.c @@ -542,10 +542,12 @@ int get_audio_file_path_of_row(const struct osl_row *row, char **path) struct osl_object path_obj; int ret = osl(osl_get_object(audio_file_table, row, AFTCOL_PATH, &path_obj)); + if (ret < 0) - return ret; - *path = path_obj.data; - return 1; + *path = NULL; + else + *path = path_obj.data; + return ret; } /** @@ -989,6 +991,8 @@ static int make_status_items(void) time_t current_time; int ret; + if (!status_item_ls_data.path) /* no audio file open */ + return 0; ret = lls_parse(ARRAY_SIZE(argv), argv, cmd, &opts.lpr, NULL); assert(ret >= 0); time(¤t_time); @@ -2567,6 +2571,16 @@ static int aft_event_handler(enum afs_events event, struct para_buffer *pb, return ret; make_status_items(); return 1; + } + case BLOB_RENAME: + case BLOB_REMOVE: + case BLOB_ADD: { + /* + * These events are rare. We don't bother to check whether the + * current status items are affected and simply recreate them + * every time. + */ + make_status_items(); } default: return 0; }