Home | History | Annotate | Download | only in gio

Lines Matching refs:cancellable

73 G_LOCK_DEFINE_STATIC(cancellable);
78 GCancellable *cancellable = G_CANCELLABLE (object);
80 if (cancellable->cancel_pipe[0] != -1)
81 close (cancellable->cancel_pipe[0]);
83 if (cancellable->cancel_pipe[1] != -1)
84 close (cancellable->cancel_pipe[1]);
87 if (cancellable->read_channel)
88 g_io_channel_unref (cancellable->read_channel);
103 * @cancellable: a #GCancellable.
107 * Can be used by implementations of cancellable operations. If the
122 * id = g_signal_connect (cancellable, "cancelled",
125 * /<!-- -->* cancellable operation here... *<!-- -->/
127 * g_signal_handler_disconnect (cancellable, id);
151 * id = g_signal_connect_data (cancellable, "cancelled",
155 * /<!-- -->* cancellable operation here... *<!-- -->/
157 * g_signal_handler_disconnect (cancellable, id);
193 g_cancellable_open_pipe (GCancellable *cancellable)
195 if (pipe (cancellable->cancel_pipe) == 0)
200 set_fd_nonblocking (cancellable->cancel_pipe[0]);
201 set_fd_nonblocking (cancellable->cancel_pipe[1]);
208 g_cancellable_init (GCancellable *cancellable)
210 cancellable->cancel_pipe[0] = -1;
211 cancellable->cancel_pipe[1] = -1;
220 * that should be cancellable should create a #GCancellable
236 * @cancellable: optional #GCancellable object, %NULL to ignore.
238 * Pushes @cancellable onto the cancellable stack. The current
241 * This is useful when implementing cancellable operations in
242 * code that does not allow you to pass down the cancellable object.
248 g_cancellable_push_current (GCancellable *cancellable)
252 g_return_if_fail (cancellable != NULL);
255 l = g_slist_prepend (l, cancellable);
261 * @cancellable: optional #GCancellable object, %NULL to ignore.
263 * Pops @cancellable off the cancellable stack (verifying that @cancellable
267 g_cancellable_pop_current (GCancellable *cancellable)
274 g_return_if_fail (l->data == cancellable);
283 * Gets the top cancellable from the stack.
302 * @cancellable: a #GCancellable object.
304 * Resets @cancellable to its uncancelled state.
307 g_cancellable_reset (GCancellable *cancellable)
309 g_return_if_fail (G_IS_CANCELLABLE (cancellable));
311 G_LOCK(cancellable);
313 if (cancellable->cancelled)
317 if (cancellable->read_channel)
320 g_io_channel_read_chars (cancellable->read_channel, &ch, 1,
325 if (cancellable->cancel_pipe[0] != -1)
326 read (cancellable->cancel_pipe[0], &ch, 1);
327 cancellable->cancelled = FALSE;
329 G_UNLOCK(cancellable);
334 * @cancellable: a #GCancellable or NULL.
336 * Checks if a cancellable job has been cancelled.
338 * Returns: %TRUE if @cancellable is cancelled,
342 g_cancellable_is_cancelled (GCancellable *cancellable)
344 return cancellable != NULL && cancellable->cancelled;
349 * @cancellable: a #GCancellable object.
352 * If the @cancellable is cancelled, sets the error to notify
355 * Returns: %TRUE if @cancellable was cancelled, %FALSE if it was not.
358 g_cancellable_set_error_if_cancelled (GCancellable *cancellable,
361 if (g_cancellable_is_cancelled (cancellable))
375 * @cancellable: a #GCancellable.
377 * Gets the file descriptor for a cancellable job. This can be used to
378 * implement cancellable operations on Unix systems. The returned fd will
379 * turn readable when @cancellable is cancelled.
387 g_cancellable_get_fd (GCancellable *cancellable)
390 if (cancellable == NULL)
393 G_LOCK(cancellable);
394 if (!cancellable->allocated_pipe)
396 cancellable->allocated_pipe = TRUE;
397 g_cancellable_open_pipe (cancellable);
400 fd = cancellable->cancel_pipe[0];
401 G_UNLOCK(cancellable);
408 * @cancellable: a #GCancellable.
411 * Creates a #GPollFD corresponding to @cancellable; this can be passed
415 g_cancellable_make_pollfd (GCancellable *cancellable, GPollFD *pollfd)
417 g_return_if_fail (G_IS_CANCELLABLE (cancellable));
421 if (!cancellable->read_channel)
423 int fd = g_cancellable_get_fd (cancellable);
424 cancellable->read_channel = g_io_channel_win32_new_fd (fd);
425 g_io_channel_set_buffered (cancellable->read_channel, FALSE);
426 g_io_channel_set_flags (cancellable->read_channel,
428 g_io_channel_set_encoding (cancellable->read_channel, NULL, NULL);
430 g_io_channel_win32_make_pollfd (cancellable->read_channel, G_IO_IN, pollfd);
431 /* (We need to keep cancellable->read_channel around, because it's
435 pollfd->fd = g_cancellable_get_fd (cancellable);
443 * @cancellable: a #GCancellable object.
445 * Will set @cancellable to cancelled, and will emit the
452 * passed the @cancellable.
461 g_cancellable_cancel (GCancellable *cancellable)
467 G_LOCK(cancellable);
468 if (cancellable != NULL &&
469 !cancellable->cancelled)
473 cancellable->cancelled = TRUE;
474 if (cancellable->cancel_pipe[1] != -1)
475 write (cancellable->cancel_pipe[1], &ch, 1);
477 G_UNLOCK(cancellable);
481 g_object_ref (cancellable);
482 g_signal_emit (cancellable, signals[CANCELLED], 0);
483 g_object_unref (cancellable);