Exemplo n.º 1
0
static void *
_load_position_fb()
{
    plugin_t *plugin = calloc(1, sizeof(plugin_t));
    plugin->state_file = xasprintf("%s" FBREADER_STATE_FILE, getenv("HOME"));
    plugin->cache = NULL;
    plugin->monitor = ecore_file_monitor_add(plugin->state_file,
        _positions_updated, plugin);
    return plugin;
}
Exemplo n.º 2
0
int
posix_monitor_add(evfs_client * client, evfs_command * command)
{
   Ecore_List *mon_list =
      ecore_hash_get(posix_monitor_hash, evfs_command_first_file_get(command)->path);
   evfs_file_monitor *mon;
   evfs_file_monitor *old;

   mon = calloc(1, sizeof(evfs_file_monitor));
   mon->client = client;
   mon->monitor_path = strdup(evfs_command_first_file_get(command)->path);

   /*Check if we are already monitoring, if not, make a new list of monitors.. */
   if (!mon_list)
     {
        /*printf("No previous instance, making a new list, monitoring..\n"); */

        mon_list = ecore_list_new();
        ecore_hash_set(posix_monitor_hash, mon->monitor_path, mon_list);

        printf("Adding monitor on path '%s'\n", mon->monitor_path);
        if (!
            (mon->em =
             ecore_file_monitor_add(mon->monitor_path,
                                    &evfs_file_monitor_fam_handler,
                                    mon->monitor_path)))
          {
             fprintf(stderr, "EVFS: Error monitoring '%s'\n",
                     mon->monitor_path);
          }

        ecore_list_append(mon_list, mon);
     }
   else
     {
        if (!client_already_monitoring(client, mon_list))
          {
             /*We assume there is something already in the list.  This is probably bad a bad assumption */
             ecore_list_first_goto(mon_list);
             old = ecore_list_current(mon_list);

             /*Make sure we have the ecore ref, so the last monitor can nuke it */
             mon->em = old->em;
             ecore_list_append(mon_list, mon);
          }
        else
          {
             printf("Oi, dufus, you're already monitoring this object\n");
          }

     }

   return 0;

}
Exemplo n.º 3
0
static Eina_Bool
volume_timer(void *data)
{
   char buf[4096];
   
   volume_load();
   volumes_load_timer = NULL;
   if (volumes_file_mon) ecore_file_monitor_del(volumes_file_mon);
   snprintf(buf, sizeof(buf), "%s/volumes", config);
   volumes_file_mon = ecore_file_monitor_add(buf, volume_file_change, NULL);
   return EINA_FALSE;
}
Exemplo n.º 4
0
void jk_monitor_add(MonitorCallback cb, void* data, const char* path)
{
  //ecore_file_init(); //TODO ecore_file_shutdown

  struct _CbData* cbdata = calloc(1, sizeof *cbdata);
  cbdata->cb = cb;
  cbdata->data = data;
  printf("TODO ERASE data");

  Ecore_File_Monitor * efm = ecore_file_monitor_add(path,
        _monitor_add,
        cbdata
        );
}
Exemplo n.º 5
0
/**
 * @internal
 * @param file File to monitor
 * @return Returns no value.
 * @brief Creates a new file monitor if we aren't already monitoring the
 * given file
 */
static void
efreet_mime_monitor_add(const char *file)
{
    Ecore_File_Monitor *fm = NULL;

    /* if this is already in our hash then we're already monitoring so no
     * reason to re-monitor */
    if (eina_hash_find(monitors, file))
        return;

    if ((fm = ecore_file_monitor_add(file, efreet_mime_cb_update_file, NULL)))
    {
        eina_hash_del(monitors, file, NULL);
        eina_hash_add(monitors, file, fm);
    }
}
Exemplo n.º 6
0
/**
 * @internal
 * @return Returns > 0 on success or 0 on failure
 * @brief Initialize the Desktop parser subsystem
 */
int
efreet_desktop_init(void)
{
    char buf[PATH_MAX];

    _efreet_desktop_log_dom = eina_log_domain_register("Efreet_desktop", EFREET_DEFAULT_LOG_COLOR);
    if (_efreet_desktop_log_dom < 0)
    {
        ERROR("Efreet: Could not create a log domain for Efreet_desktop");
        return 0;
    }
    if (!ecore_file_init())
        goto ecore_error;
    desktop_edd = efreet_desktop_edd_init();
    if (!desktop_edd)
        goto edd_error;

    efreet_desktop_cache = eina_hash_string_superfast_new(NULL);
    efreet_desktop_types = NULL;

    EFREET_DESKTOP_TYPE_APPLICATION = efreet_desktop_type_add("Application",
                                        efreet_desktop_application_fields_parse,
                                        efreet_desktop_application_fields_save,
                                        NULL);
    EFREET_DESKTOP_TYPE_LINK = efreet_desktop_type_add("Link",
                                    efreet_desktop_link_fields_parse,
                                    efreet_desktop_link_fields_save, NULL);
    EFREET_DESKTOP_TYPE_DIRECTORY = efreet_desktop_type_add("Directory", NULL,
                                                                NULL, NULL);

    EFREET_EVENT_DESKTOP_CACHE_UPDATE = ecore_event_type_new();

    snprintf(buf, sizeof(buf), "%s/.efreet", efreet_home_dir_get());
    if (!ecore_file_mkpath(buf)) goto cache_error;

    if (efreet_cache_update)
    {
        efreet_desktop_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
                                                             efreet_desktop_exe_cb, NULL);
        if (!efreet_desktop_exe_handler) goto cache_error;

        cache_monitor = ecore_file_monitor_add(buf,
                                               efreet_desktop_cache_update_cb,
                                               NULL);
        if (!cache_monitor) goto handler_error;

        efreet_desktop_changes_listen();

        ecore_exe_run(PACKAGE_LIB_DIR "/efreet/efreet_desktop_cache_create", NULL);

    }

    /* TODO: Defer eet open until we actually need it open. */
    cache = eet_open(efreet_desktop_cache_file(), EET_FILE_MODE_READ);

    return 1;

handler_error:
    if (efreet_desktop_exe_handler) ecore_event_handler_del(efreet_desktop_exe_handler);
cache_error:
    if (efreet_desktop_cache) eina_hash_free(efreet_desktop_cache);
edd_error:
    ecore_file_shutdown();
ecore_error:
    eina_log_domain_unregister(_efreet_desktop_log_dom);
    return 0;
}