add metadata fetcher flag to prevent exit while running
This commit is contained in:
parent
76c74ee8f3
commit
20c0ce82b9
|
@ -20,8 +20,8 @@ typedef Empc_Module_Type (*Empc_Module_Type_Cb)(void);
|
|||
typedef int (*Empc_Module_Priority_Cb)(void);
|
||||
typedef void (*Empc_Module_Metadata_Save_Image_Cb)(Evas_Object *obj, const char *artist, const char *album);
|
||||
typedef void (*Empc_Module_Metadata_Save_Text_Cb)(const char *text, const char *artist, const char *song);
|
||||
typedef Eina_Bool (*Empc_Module_Metadata_Fetch_Cb)(const Empc_Fetch_Request *);
|
||||
typedef void (*Empc_Module_Metadata_Cancel_Cb)(const Empc_Fetch_Request *);
|
||||
typedef Eina_Bool (*Empc_Module_Metadata_Fetch_Cb)(Empc_Fetch_Request *);
|
||||
typedef void (*Empc_Module_Metadata_Cancel_Cb)(Empc_Fetch_Request *);
|
||||
typedef void (*Empc_Module_Metadata_Fetch_Result_Cb)(void *, Empc_Fetch_Request *, Evas_Object *img);
|
||||
|
||||
struct Empc_Fetch_Request
|
||||
|
@ -31,6 +31,7 @@ struct Empc_Fetch_Request
|
|||
Eina_Stringshare *song;
|
||||
Empc_Metadata_Type type;
|
||||
Eina_Bool force : 1;
|
||||
Eina_Bool running : 1; //module is active
|
||||
};
|
||||
|
||||
void empc_metadata_fetch_done(Empc_Fetch_Request *req, Eina_List *l);
|
||||
|
|
|
@ -47,7 +47,7 @@ metadata_image_done(Metadata_Image *m, Eina_Bool deleted)
|
|||
E_FREE_LIST(m->ireq->urls_pending, eina_stringshare_del);
|
||||
}
|
||||
eina_binbuf_free(m->buf);
|
||||
if (!m->ireq->urls)
|
||||
if ((!m->ireq->urls) && (!m->ireq->req.running))
|
||||
empc_metadata_fetch_done((void*)m->ireq, NULL);
|
||||
free(m);
|
||||
}
|
||||
|
@ -220,6 +220,7 @@ metadata_fetch_cancel(Empc_Fetch_Request *req, Evas_Object *obj, Empc_Module_Met
|
|||
if (em->cancel)
|
||||
{
|
||||
em->cancel(req);
|
||||
req->running = 0;
|
||||
eina_hash_del_by_data(empc_metadata_fetch_reqs[ireq->module->type], req);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -103,6 +103,7 @@ exe_del(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Exe_Event_Del *ev)
|
|||
if ((!tag) || strcmp(tag, "glyr")) return ECORE_CALLBACK_DONE;
|
||||
ecore_exe_tag_set(ev->exe, NULL);
|
||||
req = ecore_exe_data_get(ev->exe);
|
||||
req->running = 0;
|
||||
empc_metadata_fetch_done(req, NULL);
|
||||
return ECORE_CALLBACK_DONE;
|
||||
}
|
||||
|
@ -123,7 +124,7 @@ empc_module_metadata_cancel(const Empc_Fetch_Request *req)
|
|||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
empc_module_metadata_fetch(const Empc_Fetch_Request *req)
|
||||
empc_module_metadata_fetch(Empc_Fetch_Request *req)
|
||||
{
|
||||
char buf[4096];
|
||||
char *artist, *album;
|
||||
|
@ -149,6 +150,7 @@ empc_module_metadata_fetch(const Empc_Fetch_Request *req)
|
|||
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_ERROR | ECORE_EXE_PIPE_ERROR_LINE_BUFFERED, req);
|
||||
if (exe)
|
||||
{
|
||||
req->running = 1;
|
||||
ecore_exe_tag_set(exe, "glyr");
|
||||
exes = eina_list_append(exes, exe);
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ static void
|
|||
gend(GImage_Data *gi, Ecore_Thread *eth EINA_UNUSED)
|
||||
{
|
||||
eina_strbuf_free(gi->data);
|
||||
gi->req->running = 0;
|
||||
empc_metadata_fetch_done(gi->req, NULL);
|
||||
free(gi);
|
||||
}
|
||||
|
@ -92,7 +93,7 @@ gdata(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Con_Event_Url_Data *ev)
|
|||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
empc_module_metadata_fetch(const Empc_Fetch_Request *req)
|
||||
empc_module_metadata_fetch(Empc_Fetch_Request *req)
|
||||
{
|
||||
Eina_Strbuf *sb = NULL;
|
||||
char buf[4096];
|
||||
|
@ -105,6 +106,7 @@ empc_module_metadata_fetch(const Empc_Fetch_Request *req)
|
|||
//if (eina_strlen_bounded(req->artist, 7) < 6)
|
||||
return EINA_FALSE; //too broad...
|
||||
}
|
||||
req->running = 1;
|
||||
|
||||
if (req->artist)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue