示例#1
0
/**
 * Shuts down the Ecore_Con_Url library.
 * @return  Number of calls that still uses Ecore_Con_Url
 * @ingroup Ecore_Con_Url_Group
 */
EAPI int
ecore_con_url_shutdown(void)
{
#ifdef HAVE_CURL
   if (!init_count) return 0;

   init_count--;

   if (init_count != 0) return init_count;

   if (_fd_idler_handler)
     ecore_idler_del(_fd_idler_handler);
   _fd_idler_handler = NULL;

   if (_curl_timeout)
     ecore_timer_del(_curl_timeout);
   _curl_timeout = NULL;

   while (_url_con_list)
     ecore_con_url_destroy(eina_list_data_get(_url_con_list));

   if (curlm)
     {
	curl_multi_cleanup(curlm);
	curlm = NULL;
     }

   curl_global_cleanup();
#endif
   return 1;
}
示例#2
0
static Eina_Bool
_event_handler_cb(void *data, int type, void *event) // event callback
{
   struct context *ctxt = data;

   printf("EVENT: processing callback for the event received.\n");

   if (ctxt->count > 100)
     {
	ecore_idle_enterer_del(ctxt->enterer);
	ecore_idle_exiter_del(ctxt->exiter);
	ecore_idler_del(ctxt->idler);

	ctxt->enterer = NULL;
	ctxt->exiter = NULL;
	ctxt->idler = NULL;

	if (ctxt->timer)
	  {
	     ecore_timer_del(ctxt->timer);
	     ctxt->timer = NULL;
	  }

	ecore_main_loop_quit();
     }

   return ECORE_CALLBACK_DONE; // same as EINA_FALSE
}
示例#3
0
void
_ecore_pa_defer_free(pa_defer_event *event)
{
   if (event->idler)
     ecore_idler_del(event->idler);

   event->idler = NULL;

   free(event);
}
示例#4
0
/* final routine on deletion */
static void
_elm_fileselector_smart_del_do(Elm_Fileselector_Smart_Data *sd)
{
   if (sd->path) eina_stringshare_del(sd->path);
   if (sd->selection) eina_stringshare_del(sd->selection);
   if (sd->sel_idler) free(ecore_idler_del(sd->sel_idler));

   ELM_WIDGET_CLASS(_elm_fileselector_parent_sc)->base.del
     (ELM_WIDGET_DATA(sd)->obj);
}
示例#5
0
void
_ecore_pa_defer_enable(pa_defer_event *event, int b)
{
   if (!b && event->idler)
     {
        ecore_idler_del(event->idler);
        event->idler = NULL;
     }
   else if (b && !event->idler)
     {
        event->idler = ecore_idler_add(_ecore_defer_wrapper, event);
     }
}
void EcoreCallbackManager::RemoveStandardCallback(CallbackData *callbackData)
{
  if (callbackData->mPriority == CallbackManager::IDLE_PRIORITY)
  {
    // delete the idle call back
    ecore_idler_del(callbackData->mIdler);
    delete callbackData;
  }
  else
  {
    // ecore doesn't give us a handle for functions we want executing on the
    // main thread, E.g. we can't do
    // handle = ecore_main_loop_thread_safe_call_async( myfunc )
    // ecore_main_loop_thread_remove_async_call(handle);  // doesn't exist
    //
    // We just have to set a flag to say do not execute.
    // Hence we can't delete the call back at this point.
    callbackData->mExecute = false;
  }
}
示例#7
0
文件: browser.c 项目: GeeXboX/enna
void
enna_browser_del(Enna_Browser *b)
{
    Enna_File *file;
    char *token;

    if (!b)
        return;

    if (b->queue_idler)
        ecore_idler_del(b->queue_idler);
    b->queue_idler = NULL;
    eina_stringshare_del(b->uri);
    if (b->ev_handler)
        ecore_event_handler_del(b->ev_handler);
    EINA_LIST_FREE(b->files, file)
        enna_file_free(file);
    EINA_LIST_FREE(b->tokens, token)
        free(token);
    if (b->vfs)
        b->vfs->func.del(b->priv_module);
    free(b);
}
示例#8
0
static void
em_cleanup(Emotion_Gstreamer_Video *ev)
{
   Emotion_Audio_Stream *astream;
   Emotion_Video_Stream *vstream;

   if (ev->send)
     {
        emotion_gstreamer_buffer_free(ev->send);
        ev->send = NULL;
     }

   if (ev->eos_bus)
     {
        gst_object_unref(GST_OBJECT(ev->eos_bus));
        ev->eos_bus = NULL;
     }

   if (ev->metadata)
     {
        _free_metadata(ev->metadata);
        ev->metadata = NULL;
     }

   if (ev->last_buffer)
     {
        gst_buffer_unref(ev->last_buffer);
        ev->last_buffer = NULL;
     }

   if (!ev->stream)
     {
        evas_object_image_video_surface_set(emotion_object_image_get(ev->obj), NULL);
        ev->stream = EINA_TRUE;
     }

   if (ev->pipeline)
     {
       gstreamer_video_sink_new(ev, ev->obj, NULL);

       g_object_set(G_OBJECT(ev->esink), "ev", NULL, NULL);
       g_object_set(G_OBJECT(ev->esink), "evas-object", NULL, NULL);
       gst_element_set_state(ev->pipeline, GST_STATE_NULL);
       gst_object_unref(ev->pipeline);

       ev->pipeline = NULL;
       ev->sink = NULL;

       if (ev->eteepad) gst_object_unref(ev->eteepad);
       ev->eteepad = NULL;
       if (ev->xvteepad) gst_object_unref(ev->xvteepad);
       ev->xvteepad = NULL;
       if (ev->xvpad) gst_object_unref(ev->xvpad);
       ev->xvpad = NULL;

       ev->src_width = 0;
       ev->src_height = 0;

#ifdef HAVE_ECORE_X
       INF("destroying window: %i", ev->win);
       if (ev->win) ecore_x_window_free(ev->win);
       ev->win = 0;
#endif
     }

   if (restart_idler)
     {
        ecore_idler_del(restart_idler);
        restart_idler = NULL;
     }

   EINA_LIST_FREE(ev->audio_streams, astream)
     free(astream);
   EINA_LIST_FREE(ev->video_streams, vstream)
     free(vstream);
}
示例#9
0
EventManager::~EventManager()
{
    ecore_idler_del(idler);
    //clear queue
    eventsQueue = queue<CalaosEvent>();
}