1. 29 May, 2017 1 commit
  2. 20 Mar, 2015 2 commits
    • Allison Karlitskaya's avatar
      GFileMonitorSource: return "interesting" value · 9adf948a
      Allison Karlitskaya authored
      Return an "interesting" boolean from the event handler function on
      GFileMonitorSource.
      
      An event was "interesting" if it will result in a signal actually being
      dispatched to the user.  It is "uninteresting" if it only hit an
      already-dirty rate limiter.
      
      We will use this information to do some backing off in the backends when
      faced with a flood of uninteresting events.
      9adf948a
    • Allison Karlitskaya's avatar
      substantially rework file monitors · 2737ab32
      Allison Karlitskaya authored
      Remove all event merging and dispatch logic from GFileMonitor.  The only
      implementation of GFileMonitor outside of glib is in gvfs and it already
      does these things properly.
      
      Get rid of GLocalDirectoryMonitor.  We will use a single class,
      GLocalFileMonitor, for both directory and file monitoring.  This will
      prevent every single backend from having to create two objects
      separately (eg: ginotifydirectorymonitor.c and ginotifyfilemonitor.c).
      
      Introduce GFileMonitorSource as a thread-safe cross-context dispatch
      mechanism.  Put it in GLocalFileMonitor.  All backends will be expected
      to dispatch via the source and not touch the GFileMonitor object at all
      from the worker thread.
      
      Remove all construct properties from GLocalFileMonitor and remove the
      "context" construct property from GFileMonitor.  All backends must now
      get the information about what file to monitor from the ->start() call
      which is mandatory to implement.
      
      Remove the implementation of rate limiting in GFileMonitor and add an
      implementation in GLocalFileMonitor.  gvfs never did anything with this
      anyway, but if it wanted to, it would have to implement it for itself.
      This was done in order to get the rate_limit field into the
      GFileMonitorSource so that it could be safely accessed from the worker
      thread.
      
      Expose g_local_file_is_remote() internally for NFS detection.
      
      With the "is_remote" functionality exposed, we can now move all
      functions for creating local file monitors to a proper location in
      glocalfilemonitor.c
      
      Port the inotify backend to adjust to the changes above.  None of the
      other backends are ported yet.  Those will come in future commits.
      2737ab32
  3. 31 Jan, 2014 1 commit
  4. 03 Oct, 2013 2 commits
    • Allison Karlitskaya's avatar
      glocalfile: add private worker monitor APIs · 33762a41
      Allison Karlitskaya authored
      Add a convenient and race-free method of watching local files from the
      GLib worker thread.
      
      Without this, the race-free way to create a monitor that dispatches
      events to the worker thread looked something like this:
      
       - dispatch an idle to the worker thread
       - from the idle, create the monitor and connect signals
       - from the original thread, wait (on a cond?) until the worker thread
         has finished setting up the monitor
       - read the file that you were monitoring
      
      which is just ridiculously complicated...
      
      To use the new API:
      
        monitor = g_local_file_monitor_new_in_worker ("/path/to/some/file",
                                                      G_FILE_MONITOR_NONE,
                                                      &error);
        g_assert_no_error (error);
      
        g_signal_connect (monitor, "changed", G_CALLBACK (callback), NULL);
      
        g_local_file_monitor_start (monitor);
      
      'callback' will run from the GLib worker thread.
      
      This is the reason that the start() call was introduced in the previous
      commit.  The backends that don't use the start() call will have a very
      thin race between creating the monitor and connecting the signal, but
      hopefully they will be fixed soon.
      
      These new APIs will be used (at least) from gdesktopappinfo to watch for
      changes in the desktop file directories.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=704887
      33762a41
    • Allison Karlitskaya's avatar
      local monitors: make more idiomatic use of GObject · b050dc3c
      Allison Karlitskaya authored
      Stop abusing constructor() to do startup work, adding _start() calls
      instead.
      
      The backends themselves still use constructor() although a patch will be
      following to also fix inotify.
      
      The reason for using a separate start() call instead of constructed()
      will become apparent in future commits.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=704887
      b050dc3c
  5. 19 Jan, 2013 1 commit
  6. 14 Jan, 2013 1 commit
    • Allison Karlitskaya's avatar
      glocal*monitor: export ABI only on UNIX · b7e749fc
      Allison Karlitskaya authored
      Add an #ifdef G_OS_UNIX around the GLIB_AVAILABLE_IN_ALL annotation on
      the _get_type() functions for GLocal{File,Directory}Monitor.
      
      These symbols are in private header files and are only exported so that
      the in-tree file monitoring modules can subclass.  This is only needed
      on UNIX and was therefore never part of the public ABI on Windows.
      
      Caught by Dieter Verfaillie.
      b7e749fc
  7. 13 Jan, 2013 1 commit
  8. 18 Feb, 2010 1 commit
  9. 02 Sep, 2008 1 commit
  10. 01 Jul, 2008 1 commit
    • Cody Russell's avatar
      Moved all relevant typedefs into these files. · 3d93bf69
      Cody Russell authored
      2008-07-01  Cody Russell  <bratsche@gnome.org>
      
              * gio/gioenums.h:
              * gio/giotypes.h:
      	Moved all relevant typedefs into these	files.
      
              * gio/*.[ch]:
      	Updated wrt added files.
      
              Split types into separate file	for easier maintainership. (#538564)
      
      
      svn path=/trunk/; revision=7127
      3d93bf69
  11. 11 Feb, 2008 1 commit
  12. 28 Jan, 2008 1 commit
    • Alexander Larsson's avatar
      Add registration hooks for extension points. Register the gio extension · bff9eced
      Alexander Larsson authored
      2008-01-28  Alexander Larsson  <alexl@redhat.com>
      
              * giomodule.[ch]:
              * gio.symbols:
      	Add registration hooks for extension points.
      	Register the gio extension points.
      	
              * fam/gfamdirectorymonitor.c:
              * fam/gfamfilemonitor.c:
              * glocaldirectorymonitor.[ch]:
              * glocalfilemonitor.[ch]:
              * gnativevolumemonitor.h:
              * gunionvolumemonitor.c:
              * gunixvolumemonitor.c:
              * gvfs.[ch]:
              * gvolumemonitor.h:
              * inotify/ginotifydirectorymonitor.c:
              * inotify/ginotifyfilemonitor.c:
      	Use the extension points registration instead
      	of g_type_children().
      
      
      svn path=/trunk/; revision=6399
      bff9eced
  13. 14 Jan, 2008 1 commit
    • Alexander Larsson's avatar
      Add GError to file monitor calls · 3690cb75
      Alexander Larsson authored
      2008-01-14  Alexander Larsson  <alexl@redhat.com>
      
              * gfile.[ch]:
              (g_file_monitor_directory):
              (g_file_monitor_file):
      	Add GError to file monitor calls
      	
              * glocaldirectorymonitor.c:
              * glocaldirectorymonitor.h:
              * glocalfile.c:
              * glocalfilemonitor.c:
              * glocalfilemonitor.h:
              * gunixmounts.c:
      	Update for above change
      
      
      svn path=/trunk/; revision=6306
      3690cb75
  14. 19 Dec, 2007 1 commit
    • Alexander Larsson's avatar
      Make g_io_modules_load_all_in_directory not unuse loaded modules so that · 28d1c8e0
      Alexander Larsson authored
      2007-12-19  Alexander Larsson  <alexl@redhat.com>
      
              * giomodule.c:
      	Make g_io_modules_load_all_in_directory not unuse
      	loaded modules so that users of it can do stuff
      	before unloading.
      	Init internal "module" types.
      	Initialize static prio and name for types so that
      	we don't have to load modules to get it.
      	
              * gnativevolumemonitor.h:
      	* gvolumemonitor.h:
      	Move is_supported to parent class so that
      	non-native monitors can avoid being initialized
      	too. (For instance GDaemonVolumeMonitor if we're
      	not using GDaemonVfs.)
      	
              * glocaldirectorymonitor.[ch]:
              * glocalfilemonitor.[ch]:
      	* gunionvolumemonitor.c:
              * gunixvolumemonitor.c:
              * gvfs.c:
      	Find plugins using the static prio+name to
      	avoid unnecessarily loading the modules.
      
      
      svn path=/trunk/; revision=6159
      28d1c8e0
  15. 28 Nov, 2007 1 commit
    • Alexander Larsson's avatar
      Removed unnecessary file · d9594f57
      Alexander Larsson authored
      2007-11-28  Alexander Larsson  <alexl@redhat.com>
      
              * Makefile.am:
              * gdriveprivate.h:
      	Removed unnecessary file
      	
              * gdesktopappinfo.[ch]:
              * gdummyfile.[ch]:
              * gfile.c:
              * glocaldirectorymonitor.[ch]:
              * glocalfile.[ch]:
              * glocalfileenumerator.[ch]:
              * glocalfileinputstream.[ch]:
              * glocalfilemonitor.[ch]:
              * glocalfileoutputstream.[ch]:
              * glocalvfs.[ch]:
              * gnativevolumemonitor.c:
              * gpollfilemonitor.[ch]:
              * gunionvolumemonitor.[ch]:
              * gunixdrive.[ch]:
              * gunixvolume.[ch]:
              * gunixvolumemonitor.[ch]:
              * gvfs.c:
              * gvolumeprivate.h:
              * inotify/ginotifydirectorymonitor.[ch]:
              * inotify/ginotifyfilemonitor.[ch]:
              * inotify/inotify-helper.c:
      	Append _ to all internal functions
      	
              * gio.symbols:
      	Add missing symbols
      	Export symbols needed for modules
      
      
      svn path=/trunk/; revision=5977
      d9594f57
  16. 26 Nov, 2007 1 commit
    • Alexander Larsson's avatar
      gio/ docs/reference/gio Merged gio-standalone into glib. · 37813437
      Alexander Larsson authored
      2007-11-26  Alexander Larsson  <alexl@redhat.com>
      
              * Makefile.am:
              * configure.in:
              * gio-2.0-uninstalled.pc.in:
              * gio-2.0.pc.in: 
              * gio-unix-2.0-uninstalled.pc.in:
              * gio-unix-2.0.pc.in:
      	* gio/
      	* docs/reference/gio
      	Merged gio-standalone into glib.
      	
              * glib/glibintl.h:
              * glib/gutils.c:
      	Export glib_gettext so that gio can use it
      	Add P_ (using same domain for now)
      	Add I_ as g_intern_static_string
      
      
      svn path=/trunk/; revision=5941
      37813437