[Xfce4-commits] <xfce4-screenshooter:master> Depend on exo-1 for the ExoJob stuff.

Jérôme Guelfucci noreply at xfce.org
Thu Nov 25 23:18:01 CET 2010


Updating branch refs/heads/master
         to 7cc2f832372978890705611e16ba935f6b535d24 (commit)
       from 1c6cf5f004d683d9623b4fce53f6f25de0970a43 (commit)

commit 7cc2f832372978890705611e16ba935f6b535d24
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date:   Thu Nov 25 23:16:36 2010 +0100

    Depend on exo-1 for the ExoJob stuff.
    
    This allows us to remove our local copy.

 Makefile.am             |    8 +-
 configure.ac.in         |    1 +
 lib/exo-job.c           |  678 -----------------------------------------------
 lib/exo-job.h           |   96 -------
 lib/exo-simple-job.c    |  281 --------------------
 lib/exo-simple-job.h    |   63 -----
 lib/screenshooter-job.h |    2 +-
 7 files changed, 8 insertions(+), 1121 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index fa74a34..55b06b6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,8 +20,6 @@ noinst_LTLIBRARIES = lib/libscreenshooter.la
 
 lib_libscreenshooter_la_SOURCES =	\
 	$(lib_libscreenshooter_built_sources) \
-  lib/exo-job.c lib/exo-job.h \
-	lib/exo-simple-job.c lib/exo-simple-job.h \
 	lib/katze-throbber.c lib/katze-throbber.h \
 	lib/libscreenshooter.h \
 	lib/screenshooter-actions.c lib/screenshooter-actions.h \
@@ -35,6 +33,7 @@ lib_libscreenshooter_la_SOURCES =	\
 
 lib_libscreenshooter_la_CFLAGS = \
 	-I$(top_srcdir)	\
+	@EXO_CFLAGS@ \
   @GTK_CFLAGS@ \
 	@GLIB_CFLAGS@ \
 	@LIBXFCE4UTIL_CFLAGS@ \
@@ -43,6 +42,7 @@ lib_libscreenshooter_la_CFLAGS = \
   -DPACKAGE_LOCALE_DIR=\"$(localedir)\"
 
 lib_libscreenshooter_la_LIBADD = \
+	@EXO_LIBS@ \
   @GTK_LIBS@ \
 	@LIBXFCE4UTIL_LIBS@ \
 	@LIBXFCEGUI4_LIBS@ \
@@ -74,6 +74,7 @@ lib/screenshooter-marshal.c: lib/screenshooter-marshal.list Makefile
 # Main application
 src_xfce4_screenshooter_CFLAGS = \
 	-I$(top_srcdir)/lib/ \
+	@EXO_CFLAGS@ \
 	@GTK_CFLAGS@ \
 	@GLIB_CFLAGS@ \
 	@LIBXFCE4UTIL_CFLAGS@ \
@@ -83,6 +84,7 @@ src_xfce4_screenshooter_CFLAGS = \
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"
 	
 src_xfce4_screenshooter_LDFLAGS = \
+	@EXO_LIBS@ \
 	@GTK_LIBS@ \
 	@GLIB_LIBS@ \
 	@GTHREAD_LIBS@ \
@@ -115,12 +117,14 @@ panel_plugin_xfce4_screenshooter_plugin_CFLAGS =	\
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"	\
 	-I$(top_srcdir)	\
 	-I$(top_srcdir)/lib/	\
+	@EXO_CFLAGS@ \
 	@LIBXFCE4PANEL_CFLAGS@ \
 	@LIBXFCEGUI4_CFLAGS@ \
 	@GTHREAD_CFLAGS@ \
 	@SOUP_CFLAGS@
 
 panel_plugin_xfce4_screenshooter_plugin_LDFLAGS = \
+	@EXO_LIBS@ \
 	@LIBXFCE4PANEL_LIBS@ \
 	@GTHREAD_LIBS@ \
 	@SOUP_LIBS@ \
diff --git a/configure.ac.in b/configure.ac.in
index e4a00b3..84bffae 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -53,6 +53,7 @@ XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.16.0])
 XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.16.0])
 XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.16.0])
 XDT_CHECK_PACKAGE([SOUP], [libsoup-2.4], [2.26.0])
+XDT_CHECK_PACKAGE([EXO], [exo-1], [0.5.0])
 
 dnl **************************
 dnl *** Check for xsltproc ***
diff --git a/lib/exo-job.c b/lib/exo-job.c
deleted file mode 100644
index 3f55ba7..0000000
--- a/lib/exo-job.c
+++ /dev/null
@@ -1,678 +0,0 @@
-/* vi:set et ai sw=2 sts=2 ts=2: */
-/*-
- * Copyright (c) 2009 Jannis Pohlmann <jannis at xfce.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <gio/gio.h>
-#include <gtk/gtk.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include "exo-job.h"
-
-#define I_(string) (g_intern_static_string ((string)))
-
-/**
- * SECTION: exo-job
- * @title: ExoJob
- * @short_description: Base class for threaded/asynchronous jobs
- * @include: exo/exo.h
- * @see_also: <link linkend="ExoSimpleJob">ExoSimpleJob</link>
- *
- * <link linkend="ExoJob">ExoJob</link> is an abstract base class
- * intended to wrap threaded/asynchronous operations (called jobs here).
- * It was written because the ways of dealing with threads provided by
- * GLib are not exactly object-oriented.
- *
- * It can be used to wrap any kind of long-running or possibly-blocking
- * operation like file operations or communication with web services.
- * The benefit of using <link linkend="ExoJob">ExoJob</link> is that one
- * gets an object associated with each operation. After creating the job
- * the caller can connect to signals like <link linkend="ExoJob::error">"error"
- * </link> or <link linkend="ExoJob::percent">"percent"</link>. This
- * design integrates very well with the usual object-oriented design of
- * applications based on GObject.
- **/
-
-
-
-#define EXO_JOB_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
-    EXO_TYPE_JOB, ExoJobPrivate))
-
-
-
-/* Signal identifiers */
-enum
-{
-  ERROR,
-  FINISHED,
-  INFO_MESSAGE,
-  PERCENT,
-  LAST_SIGNAL,
-};
-
-
-
-typedef struct _ExoJobSignalData ExoJobSignalData;
-
-
-
-static void exo_job_finalize   (GObject      *object);
-static void exo_job_error      (ExoJob       *job,
-                                GError       *error);
-static void exo_job_finished   (ExoJob       *job);
-
-
-
-struct _ExoJobPrivate
-{
-  GIOSchedulerJob *scheduler_job;
-  GCancellable    *cancellable;
-  guint            running : 1;
-};
-
-struct _ExoJobSignalData
-{
-  gpointer instance;
-  GQuark   signal_detail;
-  guint    signal_id;
-  va_list  var_args;
-};
-
-
-
-static guint job_signals[LAST_SIGNAL];
-
-
-
-G_DEFINE_ABSTRACT_TYPE (ExoJob, exo_job, G_TYPE_OBJECT)
-
-
-
-static void
-exo_job_class_init (ExoJobClass *klass)
-{
-  GObjectClass *gobject_class;
-
-  g_type_class_add_private (klass, sizeof (ExoJobPrivate));
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = exo_job_finalize;
-
-  klass->execute = NULL;
-  klass->error = NULL;
-  klass->finished = NULL;
-  klass->info_message = NULL;
-  klass->percent = NULL;
-
-  /**
-   * ExoJob::error:
-   * @job   : an #ExoJob.
-   * @error : a #GError describing the cause.
-   *
-   * Emitted whenever an error occurs while executing the @job. This signal
-   * may not be emitted from within #ExoJob subclasses. If a subclass wants
-   * to emit an "error" signal (and thereby terminate the operation), it has
-   * to fill the #GError structure and abort from its execute() method. 
-   * #ExoJob will automatically emit the "error" signal when the #GError is 
-   * filled after the execute() method has finished.
-   *
-   * Callers interested in whether the @job was cancelled can connect to
-   * the "cancelled" signal of the #GCancellable returned from 
-   * exo_job_get_cancellable().
-   **/
-  job_signals[ERROR] =
-    g_signal_new (I_("error"),
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_NO_HOOKS,
-                  G_STRUCT_OFFSET (ExoJobClass, error),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__POINTER,
-                  G_TYPE_NONE, 1, G_TYPE_POINTER);
-
-  /**
-   * ExoJob::finished:
-   * @job : an #ExoJob.
-   *
-   * This signal will be automatically emitted once the @job finishes
-   * its execution, no matter whether @job completed successfully or
-   * was cancelled by the user. It may not be emitted by subclasses of
-   * #ExoJob as it is automatically emitted by #ExoJob after the execute()
-   * method has finished.
-   **/
-  job_signals[FINISHED] =
-    g_signal_new (I_("finished"),
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_NO_HOOKS,
-                  G_STRUCT_OFFSET (ExoJobClass, finished),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-
-  /**
-   * ExoJob::info-message:
-   * @job     : an #ExoJob.
-   * @message : information to be displayed about @job.
-   *
-   * This signal is emitted to display information about the status of 
-   * the @job. Examples of messages are "Preparing..." or "Cleaning up...".
-   *
-   * The @message is garanteed to contain valid UTF-8, so it can be
-   * displayed by #GtkWidget<!---->s out of the box.
-   **/
-  job_signals[INFO_MESSAGE] =
-    g_signal_new (I_("info-message"),
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_NO_HOOKS,
-                  G_STRUCT_OFFSET (ExoJobClass, info_message),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__STRING,
-                  G_TYPE_NONE, 1, G_TYPE_STRING);
-
-  /**
-   * ExoJob::percent:
-   * @job     : an #ExoJob.
-   * @percent : the percentage of completeness.
-   *
-   * This signal is emitted to present the overall progress of the 
-   * operation. The @percent value is garantied to be a value between 
-   * 0.0 and 100.0.
-   **/
-  job_signals[PERCENT] =
-    g_signal_new (I_("percent"),
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_NO_HOOKS,
-                  G_STRUCT_OFFSET (ExoJobClass, percent),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__DOUBLE,
-                  G_TYPE_NONE, 1, G_TYPE_DOUBLE);
-}
-
-
-
-static void
-exo_job_init (ExoJob *job)
-{
-  job->priv = EXO_JOB_GET_PRIVATE (job);
-  job->priv->cancellable = g_cancellable_new ();
-  job->priv->running = FALSE;
-  job->priv->scheduler_job = NULL;
-}
-
-
-
-static void
-exo_job_finalize (GObject *object)
-{
-  ExoJob *job = EXO_JOB (object);
-
-  if (job->priv->running)
-    exo_job_cancel (job);
-
-  g_object_unref (job->priv->cancellable);
-
-  (*G_OBJECT_CLASS (exo_job_parent_class)->finalize) (object);
-}
-
-
-
-/**
- * exo_job_finish:
- * @job    : an #ExoJob.
- * @result : the #GSimpleAsyncResult of the job.
- * @error  : return location for errors.
- *
- * Finishes the execution of an operation by propagating errors
- * from the @result into @error.
- *
- * Returns: %TRUE if there was no error during the operation,
- *          %FALSE otherwise.
- **/
-static gboolean
-exo_job_finish (ExoJob             *job,
-                GSimpleAsyncResult *result,
-                GError            **error)
-{
-  g_return_val_if_fail (EXO_IS_JOB (job), FALSE);
-  g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  return !g_simple_async_result_propagate_error (result, error);
-}
-
-
-
-/**
- * exo_job_async_ready:
- * @object : an #ExoJob.
- * @result : the #GAsyncResult of the job.
- *
- * This function is called by the #GIOScheduler at the end of the
- * operation. It checks if there were errors during the operation
- * and emits "error" and "finished" signals.
- **/
-static void
-exo_job_async_ready (GObject      *object,
-                     GAsyncResult *result)
-{
-  ExoJob *job = EXO_JOB (object);
-  GError *error = NULL;
-
-  g_return_if_fail (EXO_IS_JOB (job));
-  g_return_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result));
-
-  if (!exo_job_finish (job, G_SIMPLE_ASYNC_RESULT (result), &error))
-    {
-      g_assert (error != NULL);
-
-      /* don't treat cancellation as an error */
-      if (error->code != G_IO_ERROR_CANCELLED)
-        exo_job_error (job, error);
-
-      g_error_free (error);
-    }
-
-  exo_job_finished (job);
-
-  job->priv->running = FALSE;
-}
-
-
-
-/**
- * exo_job_scheduler_job_func:
- * @scheduler_job : the #GIOSchedulerJob running the operation.
- * @cancellable   : the #GCancellable associated with the job.
- * @user_data     : a #GSimpleAsyncResult.
- *
- * This function is called by the #GIOScheduler to execute the
- * operation associated with the job. It basically calls the
- * execute() function of #ExoJobClass.
- *
- * Returns: %FALSE, to stop the thread at the end of the operation.
- **/
-static gboolean
-exo_job_scheduler_job_func (GIOSchedulerJob *scheduler_job,
-                            GCancellable    *cancellable,
-                            gpointer         user_data)
-{
-  GSimpleAsyncResult *result = user_data;
-  ExoJob             *job;
-  GError             *error = NULL;
-  gboolean            success;
-
-  job = g_simple_async_result_get_op_res_gpointer (result);
-  job->priv->scheduler_job = scheduler_job;
-
-  success = (*EXO_JOB_GET_CLASS (job)->execute) (job, &error);
-
-  /* TODO why was this necessary again? GIO uses this too, for some reason. */
-  g_io_scheduler_job_send_to_mainloop (scheduler_job, (GSourceFunc) gtk_false,
-                                       NULL, NULL);
-
-  if (!success)
-    {
-      g_simple_async_result_set_from_error (result, error);
-      g_error_free (error);
-    }
-
-  g_simple_async_result_complete_in_idle (result);
-
-  return FALSE;
-}
-
-
-
-/**
- * exo_job_emit_valist_in_mainloop:
- * @user_data : an #ExoJobSignalData.
- *
- * Called from the main loop of the application to emit the signal
- * specified by the @user_data.
- *
- * Returns: %FALSE, to keep the function from being called
- *          multiple times in a row.
- **/
-static gboolean
-exo_job_emit_valist_in_mainloop (gpointer user_data)
-{
-  ExoJobSignalData *data = user_data;
-
-  g_signal_emit_valist (data->instance, data->signal_id, data->signal_detail,
-                        data->var_args);
-
-  return FALSE;
-}
-
-
-/**
- * exo_job_emit_valist:
- * @job           : an #ExoJob.
- * @signal_id     : the signal id.
- * @signal_detail : the signal detail.
- * @var_args      : a list of parameters to be passed to the signal,
- *                  followed by a location for the return value. If the
- *                  return type of the signal is G_TYPE_NONE, the return
- *                  value location can be omitted.
- *
- * Sends a the signal with the given @signal_id and @signal_detail to the
- * main loop of the application and waits for listeners to handle it.
- **/
-static void
-exo_job_emit_valist (ExoJob *job,
-                     guint   signal_id,
-                     GQuark  signal_detail,
-                     va_list var_args)
-{
-  ExoJobSignalData data;
-
-  g_return_if_fail (EXO_IS_JOB (job));
-  g_return_if_fail (job->priv->scheduler_job != NULL);
-
-  data.instance = job;
-  data.signal_id = signal_id;
-  data.signal_detail = signal_detail;
-
-  /* copy the variable argument list */
-  G_VA_COPY (data.var_args, var_args);
-
-  /* emit the signal in the main loop */
-  g_io_scheduler_job_send_to_mainloop (job->priv->scheduler_job,
-                                       exo_job_emit_valist_in_mainloop,
-                                       &data, NULL);
-}
-
-
-
-/**
- * exo_job_error:
- * @job   : an #ExoJob.
- * @error : a #GError.
- *
- * Emits the "error" signal and passes the @error to it so that the
- * application can handle it (e.g. by displaying an error dialog).
- *
- * This function should never be called from outside the application's
- * main loop.
- **/
-static void
-exo_job_error (ExoJob *job,
-               GError *error)
-{
-  g_return_if_fail (EXO_IS_JOB (job));
-  g_return_if_fail (error != NULL);
-
-  g_signal_emit (job, job_signals[ERROR], 0, error);
-}
-
-
-
-/**
- * exo_job_finished:
- * @job : an #ExoJob.
- *
- * Emits the "finished" signal to notify listeners of the end of the
- * operation.
- *
- * This function should never be called from outside the application's
- * main loop.
- **/
-static void
-exo_job_finished (ExoJob *job)
-{
-  g_return_if_fail (EXO_IS_JOB (job));
-  g_signal_emit (job, job_signals[FINISHED], 0);
-}
-
-
-
-/**
- * exo_job_launch:
- * @job : an #ExoJob.
- *
- * This functions schedules the @job to be run as soon as possible, in
- * a separate thread. The caller can connect to signals of the @job prior
- * or after this call in order to be notified on errors, progress updates
- * and the end of the operation.
- *
- * Returns: the @job itself.
- **/
-ExoJob *
-exo_job_launch (ExoJob *job)
-{
-  GSimpleAsyncResult *result;
-
-  g_return_val_if_fail (EXO_IS_JOB (job), NULL);
-  g_return_val_if_fail (!job->priv->running, NULL);
-  g_return_val_if_fail (EXO_JOB_GET_CLASS (job)->execute != NULL, NULL);
-
-  /* mark the job as running */
-  job->priv->running = TRUE;
-
-  result = g_simple_async_result_new (G_OBJECT (job),
-                                      (GAsyncReadyCallback) exo_job_async_ready,
-                                      NULL, exo_job_launch);
-
-  g_simple_async_result_set_op_res_gpointer (result, g_object_ref (job),
-                                             (GDestroyNotify) g_object_unref);
-
-  g_io_scheduler_push_job (exo_job_scheduler_job_func, result,
-                           (GDestroyNotify) g_object_unref,
-                           G_PRIORITY_HIGH, job->priv->cancellable);
-
-  return job;
-}
-
-
-
-/**
- * exo_job_cancel:
- * @job : a #ExoJob.
- *
- * Attempts to cancel the operation currently performed by @job. Even
- * after the cancellation of @job, it may still emit signals, so you
- * must take care of disconnecting all handlers appropriately if you
- * cannot handle signals after cancellation.
- *
- * Calling this function when the @job has not been launched yet or
- * when it has already finished will have no effect.
- **/
-void
-exo_job_cancel (ExoJob *job)
-{
-  g_return_if_fail (EXO_IS_JOB (job));
-
-  if (job->priv->running)
-    g_cancellable_cancel (job->priv->cancellable);
-}
-
-
-
-/**
- * exo_job_is_cancelled:
- * @job : a #ExoJob.
- *
- * Checks whether @job was previously cancelled
- * by a call to exo_job_cancel().
- *
- * Returns: %TRUE if @job is cancelled.
- **/
-gboolean
-exo_job_is_cancelled (const ExoJob *job)
-{
-  g_return_val_if_fail (EXO_IS_JOB (job), FALSE);
-  return g_cancellable_is_cancelled (job->priv->cancellable);
-}
-
-
-
-/**
- * exo_job_get_cancellable:
- * @job : an #ExoJob.
- *
- * Returns the #GCancellable that can be used to cancel the @job.
- *
- * Returns: the #GCancellable associated with the @job. It
- *          is owned by the @job and must not be released.
- **/
-GCancellable *
-exo_job_get_cancellable (const ExoJob *job)
-{
-  g_return_val_if_fail (EXO_IS_JOB (job), NULL);
-  return job->priv->cancellable;
-}
-
-
-
-/**
- * exo_job_set_error_if_cancelled:
- * @job   : an #ExoJob.
- * @error : error to be set if the @job was cancelled.
- *
- * Sets the @error if the @job was cancelled. This is a convenience
- * function that is equivalent to
- * <informalexample><programlisting>
- * GCancellable *cancellable;
- * cancellable = exo_job_get_cancllable (job);
- * g_cancellable_set_error_if_cancelled (cancellable, error);
- * </programlisting></informalexample>
- *
- * Returns: %TRUE if the job was cancelled and @error is now set, 
- *          %FALSE otherwise.
- **/
-gboolean
-exo_job_set_error_if_cancelled (ExoJob  *job,
-                                GError **error)
-{
-  g_return_val_if_fail (EXO_IS_JOB (job), FALSE);
-  return g_cancellable_set_error_if_cancelled (job->priv->cancellable, error);
-}
-
-
-
-/**
- * exo_job_emit:
- * @job           : an #ExoJob.
- * @signal_id     : the signal id.
- * @signal_detail : the signal detail.
- * @Varargs       : a list of parameters to be passed to the signal,
- *                  followed by a location for the return value. If the
- *                  return type of the signal is G_TYPE_NONE, the return
- *                  value location can be omitted.
- *
- * Sends the signal with @signal_id and @signal_detail to the application's
- * main loop and waits for listeners to handle it.
- **/
-void
-exo_job_emit (ExoJob *job,
-              guint   signal_id,
-              GQuark  signal_detail,
-              ...)
-{
-  va_list var_args;
-
-  g_return_if_fail (EXO_IS_JOB (job));
-
-  va_start (var_args, signal_detail);
-  exo_job_emit_valist (job, signal_id, signal_detail, var_args);
-  va_end (var_args);
-}
-
-
-
-/**
- * exo_job_info_message:
- * @job     : an #ExoJob.
- * @format  : a format string.
- * @Varargs : parameters for the format string.
- *
- * Generates and emits an "info-message" signal and sends it to the
- * application's main loop.
- **/
-void
-exo_job_info_message (ExoJob      *job,
-                      const gchar *format,
-                      ...)
-{
-  va_list var_args;
-  gchar  *message;
-
-  g_return_if_fail (EXO_IS_JOB (job));
-  g_return_if_fail (format != NULL);
-
-  va_start (var_args, format);
-  message = g_strdup_vprintf (format, var_args);
-
-  exo_job_emit (job, job_signals[INFO_MESSAGE], 0, message);
-
-  g_free (message);
-  va_end (var_args);
-}
-
-
-
-/**
- * exo_job_percent:
- * @job     : an #ExoJob.
- * @percent : percentage of completeness of the operation.
- *
- * Emits a "percent" signal and sends it to the application's main
- * loop. Also makes sure that @percent is between 0.0 and 100.0.
- **/
-void
-exo_job_percent (ExoJob *job,
-                 gdouble percent)
-{
-  g_return_if_fail (EXO_IS_JOB (job));
-
-  percent = CLAMP (percent, 0.0, 100.0);
-  exo_job_emit (job, job_signals[PERCENT], 0, percent);
-}
-
-
-
-/**
- * exo_job_send_to_mainloop:
- * @job            : an #ExoJob.
- * @func           : a #GSourceFunc callback that will be called in the main thread.
- * @user_data      : data to pass to @func.
- * @destroy_notify : a #GDestroyNotify for @user_data, or %NULL.
- *
- * This functions schedules @func to be run in the main loop (main thread),
- * waiting for the result (and blocking the job in the meantime).
- *
- * Returns: The return value of @func.
- **/
-gboolean
-exo_job_send_to_mainloop (ExoJob        *job,
-                          GSourceFunc    func,
-                          gpointer       user_data,
-                          GDestroyNotify destroy_notify)
-{
-  g_return_val_if_fail (EXO_IS_JOB (job), FALSE);
-
-  return g_io_scheduler_job_send_to_mainloop (job->priv->scheduler_job, func, user_data,
-                                              destroy_notify);
-}
-
diff --git a/lib/exo-job.h b/lib/exo-job.h
deleted file mode 100644
index cc20ce2..0000000
--- a/lib/exo-job.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* vi:set et ai sw=2 sts=2 ts=2: */
-/*-
- * Copyright (c) 2009 Jannis Pohlmann <jannis at xfce.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef __EXO_JOB_H__
-#define __EXO_JOB_H__
-
-#include <gio/gio.h>
-
-G_BEGIN_DECLS
-
-#define EXO_TYPE_JOB            (exo_job_get_type ())
-#define EXO_JOB(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXO_TYPE_JOB, ExoJob))
-#define EXO_JOB_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EXO_TYPE_JOB, ExoJobClass))
-#define EXO_IS_JOB(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXO_TYPE_JOB))
-#define EXO_IS_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EXO_TYPE_JOB)
-#define EXO_JOB_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EXO_TYPE_JOB, ExoJobClass))
-
-typedef struct _ExoJobPrivate ExoJobPrivate;
-typedef struct _ExoJobClass   ExoJobClass;
-typedef struct _ExoJob        ExoJob;
-
-struct _ExoJobClass
-{
-  GObjectClass __parent__;
-
-  /* virtual methods */
-  gboolean   (*execute)      (ExoJob      *job,
-                              GError     **error);
-
-  /* signals */
-  void       (*error)        (ExoJob      *job,
-                              GError      *error);
-  void       (*finished)     (ExoJob      *job);
-  void       (*info_message) (ExoJob      *job,
-                              const gchar *message);
-  void       (*percent)      (ExoJob      *job,
-                              gdouble      percent);
-};
-
-/**
- * ExoJob:
- *
- * The #ExoJob struct contains only private fields and should not be
- * directly accessed.
- **/
-struct _ExoJob
-{
-  GObject __parent__;
-
-  /*< private >*/
-  ExoJobPrivate *priv;
-};
-
-GType           exo_job_get_type               (void) G_GNUC_CONST;
-
-ExoJob         *exo_job_launch                 (ExoJob        *job);
-void            exo_job_cancel                 (ExoJob        *job);
-gboolean        exo_job_is_cancelled           (const ExoJob  *job);
-GCancellable   *exo_job_get_cancellable        (const ExoJob  *job);
-gboolean        exo_job_set_error_if_cancelled (ExoJob        *job,
-                                                GError       **error);
-void            exo_job_emit                   (ExoJob        *job,
-                                                guint          signal_id,
-                                                GQuark         signal_detail,
-                                                ...);
-void            exo_job_info_message           (ExoJob        *job,
-                                                const gchar   *format,
-                                                ...);
-void            exo_job_percent                (ExoJob        *job,
-                                                gdouble        percent);
-gboolean        exo_job_send_to_mainloop       (ExoJob        *job,
-                                                GSourceFunc    func,
-                                                gpointer       user_data,
-                                                GDestroyNotify destroy_notify);
-
-G_END_DECLS
-
-#endif /* !__EXO_JOB_H__ */
diff --git a/lib/exo-simple-job.c b/lib/exo-simple-job.c
deleted file mode 100644
index 74e86d4..0000000
--- a/lib/exo-simple-job.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006 Benedikt Meurer <benny at xfce.org>
- * Copyright (c) 2009 Jannis Pohlmann <jannis at xfce.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-#ifdef HAVE_STDARG_H
-#include <stdarg.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <gobject/gvaluecollector.h>
-
-#include "exo-job.h"
-#include "exo-simple-job.h"
-
-/**
- * SECTION: exo-simple-job
- * @title: ExoSimpleJob
- * @short_description: Simple interface to execute functions asynchronously
- * @include: exo/exo.h
- * @see_also: <link linkend="ExoJob">ExoJob</link>
- *
- * <link linkend="ExoSimpleJob">ExoSimpleJob</link> can be used to execute
- * functions asynchronously in an #ExoJob wrapper object. It is easier to
- * use than the #GThread system and provides basic signals to follow the
- * progress of an operation.
- **/
-
-
-
-static void     exo_simple_job_finalize   (GObject           *object);
-static gboolean exo_simple_job_execute    (ExoJob            *job,
-                                           GError           **error);
-
-
-
-struct _ExoSimpleJobClass
-{
-  ExoJobClass __parent__;
-};
-
-/**
- * ExoSimpleJob:
- *
- * The #ExoSimpleJob struct contains only private fields and should not be
- * directly accessed.
- **/
-struct _ExoSimpleJob
-{
-  ExoSimpleJobFunc func;
-  GValueArray     *param_values;
-  ExoJob           __parent__;
-};
-
-
-
-G_DEFINE_TYPE (ExoSimpleJob, exo_simple_job, EXO_TYPE_JOB)
-
-
-
-static void
-exo_simple_job_class_init (ExoSimpleJobClass *klass)
-{
-  ExoJobClass  *exojob_class;
-  GObjectClass *gobject_class;
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = exo_simple_job_finalize;
-
-  exojob_class = EXO_JOB_CLASS (klass);
-  exojob_class->execute = exo_simple_job_execute;
-}
-
-
-
-static void
-exo_simple_job_init (ExoSimpleJob *simple_job)
-{
-}
-
-
-
-static void
-exo_simple_job_finalize (GObject *object)
-{
-  ExoSimpleJob *simple_job = EXO_SIMPLE_JOB (object);
-
-  /* release the param values */
-  g_value_array_free (simple_job->param_values);
-
-  (*G_OBJECT_CLASS (exo_simple_job_parent_class)->finalize) (object);
-}
-
-
-
-static gboolean
-exo_simple_job_execute (ExoJob  *job,
-                        GError **error)
-{
-  ExoSimpleJob *simple_job = EXO_SIMPLE_JOB (job);
-  gboolean         success = TRUE;
-  GError          *err = NULL;
-
-  g_return_val_if_fail (EXO_IS_SIMPLE_JOB (job), FALSE);
-  g_return_val_if_fail (simple_job->func != NULL, FALSE);
-
-  /* try to execute the job using the supplied function */
-  success = (*simple_job->func) (job, simple_job->param_values, &err);
-
-  if (!success)
-    {
-      g_assert (err != NULL || exo_job_is_cancelled (job));
-
-      /* set error if the job was cancelled. otherwise just propagate
-       * the results of the processing function */
-      if (exo_job_set_error_if_cancelled (job, error))
-        {
-          g_clear_error (&err);
-        }
-      else
-        {
-          if (err != NULL)
-            g_propagate_error (error, err);
-        }
-
-      return FALSE;
-    }
-  else
-    return TRUE;
-}
-
-
-
-/**
- * exo_simple_job_launch:
- * @func           : the #ExoSimpleJobFunc to execute the job.
- * @n_param_values : the number of parameters to pass to the @func.
- * @...            : a list of #GType and parameter pairs (exactly
- *                   @n_param_values pairs) that are passed to @func.
- *
- * Allocates a new #ExoJob which executes the specified @func with
- * the specified parameters.
- *
- * An example could be:
- *
- * <informalexample><programlisting>
- * static gboolean 
- * list_directory (ExoJob      *job,
- *                 GValueArray *param_values,
- *                 GError     **error)
- * {
- *   GFileEnumerator *enumerator;
- *   GFileInfo       *info;
- *   GError          *err = NULL;
- *   GFile           *directory;
- *
- *   if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
- *     return FALSE;
- *
- *   directory = g_value_get_object (g_value_array_get_nth (param_values, 0));
- *
- *   enumerator = g_file_enumerate_children (directory, 
- *                                           "standard::display-name",
- *                                           G_FILE_QUERY_INFO_NONE,
- *                                           exo_job_get_cancellable (job),
- *                                           &err);
- *
- *   if (err != NULL) 
- *     {
- *       g_propagate_error (error, err);
- *       return FALSE;
- *     }
- *
- *   while (TRUE)
- *     {
- *       info = g_file_enumerator_next_file (enumerator, 
- *                                           exo_job_get_cancellable (job),
- *                                           &err);
- *
- *       if (info == NULL)
- *         break;
- *
- *       exo_job_info_message (job, _("Child: %s"), 
- *                             g_file_info_get_display_name (info));
- *
- *       g_object_unref (info);
- *     }
- *
- *   g_object_unref (enumerator);
- *
- *   if (err != NULL)
- *     {
- *       g_propagate_error (error, err);
- *       return FALSE;
- *     }
- *   else
- *     {
- *       return TRUE;
- *     }
- * }
- *
- * ...
- *
- * GFile *file = g_file_new_for_path ("/home/user");
- * ExoJob *job = exo_simple_job_launch (list_directory, 1, G_TYPE_FILE, file);
- * g_signal_connect (job, "info-message", G_CALLBACK (update_some_widget), widget);
- * g_signal_connect (job, "finished", G_CALLBACK (unref_the_job_object), NULL);
- * </programlisting></informalexample>
- *
- * The caller is responsible to release the returned #ExoJob object 
- * using g_object_unref() when no longer needed.
- *
- * Returns: the launched #ExoJob.
- **/
-ExoJob*
-exo_simple_job_launch (ExoSimpleJobFunc func,
-                       guint            n_param_values,
-                       ...)
-{
-  ExoSimpleJob *simple_job;
-  va_list       var_args;
-  GValue        value = { 0, };
-  gchar        *error_message;
-  guint         n;
-
-  /* allocate and initialize the simple job */
-  simple_job = g_object_new (EXO_TYPE_SIMPLE_JOB, NULL);
-  simple_job->func = func;
-  simple_job->param_values = g_value_array_new (n_param_values);
-
-  /* collect the parameters */
-  va_start (var_args, n_param_values);
-  for (n = 0; n < n_param_values; ++n)
-    {
-      /* initialize the value to hold the next parameter */
-      g_value_init (&value, va_arg (var_args, GType));
-
-      /* collect the value from the stack */
-      G_VALUE_COLLECT (&value, var_args, 0, &error_message);
-
-      /* check if an error occurred */
-      if (G_UNLIKELY (error_message != NULL))
-        {
-          g_error ("%s: %s", G_STRLOC, error_message);
-          g_free (error_message);
-        }
-
-      g_value_array_insert (simple_job->param_values, n, &value);
-      g_value_unset (&value);
-    }
-  va_end (var_args);
-
-  /* launch the job */
-  return exo_job_launch (EXO_JOB (simple_job));
-}
-
diff --git a/lib/exo-simple-job.h b/lib/exo-simple-job.h
deleted file mode 100644
index 6aae796..0000000
--- a/lib/exo-simple-job.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* vi:set et ai sw=2 sts=2 ts=2: */
-/*-
- * Copyright (c) 2009 Jannis Pohlmann <jannis at xfce.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __EXO_SIMPLE_JOB_H__
-#define __EXO_SIMPLE_JOB_H__
-
-#include "exo-job.h"
-
-G_BEGIN_DECLS
-
-/**
- * ExoSimpleJobFunc:
- * @job            : an #ExoJob.
- * @param_values   : a #GValueArray of the #GValue<!---->s passed to
- *                   exo_simple_job_launch().
- * @error          : return location for errors.
- *
- * Used by the #ExoSimpleJob to process the @job. See exo_simple_job_launch()
- * for further details.
- *
- * Returns: %TRUE on success, %FALSE in case of an error.
- **/
-typedef gboolean (*ExoSimpleJobFunc) (ExoJob      *job,
-                                      GValueArray *param_values,
-                                      GError     **error);
-
-
-#define EXO_TYPE_SIMPLE_JOB            (exo_simple_job_get_type ())
-#define EXO_SIMPLE_JOB(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXO_TYPE_SIMPLE_JOB, ExoSimpleJob))
-#define EXO_SIMPLE_JOB_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EXO_TYPE_SIMPLE_JOB, ExoSimpleJobClass))
-#define EXO_IS_SIMPLE_JOB(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXO_TYPE_SIMPLE_JOB))
-#define EXO_IS_SIMPLE_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EXO_TYPE_SIMPLE_JOB))
-#define EXO_SIMPLE_JOB_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EXO_TYPE_SIMPLE_JOB, ExoSimpleJobClass))
-
-typedef struct _ExoSimpleJobClass ExoSimpleJobClass;
-typedef struct _ExoSimpleJob      ExoSimpleJob;
-
-GType   exo_simple_job_get_type (void) G_GNUC_CONST;
-
-ExoJob *exo_simple_job_launch   (ExoSimpleJobFunc func,
-                                 guint            n_param_values,
-                                 ...) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-G_END_DECLS
-
-#endif /* !__EXO_SIMPLE_JOB_H__ */
diff --git a/lib/screenshooter-job.h b/lib/screenshooter-job.h
index 1b48c20..ecb3543 100644
--- a/lib/screenshooter-job.h
+++ b/lib/screenshooter-job.h
@@ -27,8 +27,8 @@
 #include <gio/gio.h>
 #include <gtk/gtk.h>
 #include <libxfce4util/libxfce4util.h>
+#include <exo/exo.h>
 
-#include "exo-simple-job.h"
 #include "screenshooter-marshal.h"
 
 G_BEGIN_DECLS



More information about the Xfce4-commits mailing list