Lines Matching refs:task

595 #define G_TASK_IS_THREADED(task) ((task)->task_func != NULL)  argument
645 g_task_init (GTask *task) in g_task_init() argument
647 task->check_cancellable = TRUE; in g_task_init()
653 GTask *task = G_TASK (object); in g_task_finalize() local
655 g_clear_object (&task->source_object); in g_task_finalize()
656 g_clear_object (&task->cancellable); in g_task_finalize()
657 g_free (task->name); in g_task_finalize()
659 if (task->context) in g_task_finalize()
660 g_main_context_unref (task->context); in g_task_finalize()
662 if (task->task_data_destroy) in g_task_finalize()
663 task->task_data_destroy (task->task_data); in g_task_finalize()
665 if (task->result_destroy && task->result.pointer) in g_task_finalize()
666 task->result_destroy (task->result.pointer); in g_task_finalize()
668 if (task->error) in g_task_finalize()
669 g_error_free (task->error); in g_task_finalize()
671 if (G_TASK_IS_THREADED (task)) in g_task_finalize()
673 g_mutex_clear (&task->lock); in g_task_finalize()
674 g_cond_clear (&task->cond); in g_task_finalize()
715 GTask *task; in g_task_new() local
718 task = g_object_new (G_TYPE_TASK, NULL); in g_task_new()
719 task->source_object = source_object ? g_object_ref (source_object) : NULL; in g_task_new()
720 task->cancellable = cancellable ? g_object_ref (cancellable) : NULL; in g_task_new()
721 task->callback = callback; in g_task_new()
722 task->callback_data = callback_data; in g_task_new()
723 task->context = g_main_context_ref_thread_default (); in g_task_new()
727 task->creation_time = g_source_get_time (source); in g_task_new()
729 TRACE (GIO_TASK_NEW (task, source_object, cancellable, in g_task_new()
732 return task; in g_task_new()
762 GTask *task; in g_task_report_error() local
764 task = g_task_new (source_object, NULL, callback, callback_data); in g_task_report_error()
765 g_task_set_source_tag (task, source_tag); in g_task_report_error()
766 g_task_set_name (task, G_STRFUNC); in g_task_report_error()
767 g_task_return_error (task, error); in g_task_report_error()
768 g_object_unref (task); in g_task_report_error()
827 g_task_set_task_data (GTask *task, in g_task_set_task_data() argument
831 g_return_if_fail (G_IS_TASK (task)); in g_task_set_task_data()
833 if (task->task_data_destroy) in g_task_set_task_data()
834 task->task_data_destroy (task->task_data); in g_task_set_task_data()
836 task->task_data = task_data; in g_task_set_task_data()
837 task->task_data_destroy = task_data_destroy; in g_task_set_task_data()
839 TRACE (GIO_TASK_SET_TASK_DATA (task, task_data, task_data_destroy)); in g_task_set_task_data()
858 g_task_set_priority (GTask *task, in g_task_set_priority() argument
861 g_return_if_fail (G_IS_TASK (task)); in g_task_set_priority()
863 task->priority = priority; in g_task_set_priority()
865 TRACE (GIO_TASK_SET_PRIORITY (task, priority)); in g_task_set_priority()
892 g_task_set_check_cancellable (GTask *task, in g_task_set_check_cancellable() argument
895 g_return_if_fail (G_IS_TASK (task)); in g_task_set_check_cancellable()
896 g_return_if_fail (check_cancellable || !task->return_on_cancel); in g_task_set_check_cancellable()
898 task->check_cancellable = check_cancellable; in g_task_set_check_cancellable()
901 static void g_task_thread_complete (GTask *task);
945 g_task_set_return_on_cancel (GTask *task, in g_task_set_return_on_cancel() argument
948 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_set_return_on_cancel()
949 g_return_val_if_fail (task->check_cancellable || !return_on_cancel, FALSE); in g_task_set_return_on_cancel()
951 if (!G_TASK_IS_THREADED (task)) in g_task_set_return_on_cancel()
953 task->return_on_cancel = return_on_cancel; in g_task_set_return_on_cancel()
957 g_mutex_lock (&task->lock); in g_task_set_return_on_cancel()
958 if (task->thread_cancelled) in g_task_set_return_on_cancel()
960 if (return_on_cancel && !task->return_on_cancel) in g_task_set_return_on_cancel()
962 g_mutex_unlock (&task->lock); in g_task_set_return_on_cancel()
963 g_task_thread_complete (task); in g_task_set_return_on_cancel()
966 g_mutex_unlock (&task->lock); in g_task_set_return_on_cancel()
969 task->return_on_cancel = return_on_cancel; in g_task_set_return_on_cancel()
970 g_mutex_unlock (&task->lock); in g_task_set_return_on_cancel()
990 (g_task_set_source_tag) (GTask *task,
993 g_return_if_fail (G_IS_TASK (task));
995 task->source_tag = source_tag;
997 TRACE (GIO_TASK_SET_SOURCE_TAG (task, source_tag));
1018 g_task_set_name (GTask *task, in g_task_set_name() argument
1023 g_return_if_fail (G_IS_TASK (task)); in g_task_set_name()
1026 g_free (task->name); in g_task_set_name()
1027 task->name = g_steal_pointer (&new_name); in g_task_set_name()
1042 g_task_get_source_object (GTask *task) in g_task_get_source_object() argument
1044 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_source_object()
1046 return task->source_object; in g_task_get_source_object()
1052 GTask *task = G_TASK (res); in g_task_ref_source_object() local
1054 if (task->source_object) in g_task_ref_source_object()
1055 return g_object_ref (task->source_object); in g_task_ref_source_object()
1071 g_task_get_task_data (GTask *task) in g_task_get_task_data() argument
1073 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_task_data()
1075 return task->task_data; in g_task_get_task_data()
1089 g_task_get_priority (GTask *task) in g_task_get_priority() argument
1091 g_return_val_if_fail (G_IS_TASK (task), G_PRIORITY_DEFAULT); in g_task_get_priority()
1093 return task->priority; in g_task_get_priority()
1113 g_task_get_context (GTask *task) in g_task_get_context() argument
1115 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_context()
1117 return task->context; in g_task_get_context()
1131 g_task_get_cancellable (GTask *task) in g_task_get_cancellable() argument
1133 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_cancellable()
1135 return task->cancellable; in g_task_get_cancellable()
1148 g_task_get_check_cancellable (GTask *task) in g_task_get_check_cancellable() argument
1150 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_get_check_cancellable()
1153 return task->check_cancellable ? TRUE : FALSE; in g_task_get_check_cancellable()
1166 g_task_get_return_on_cancel (GTask *task) in g_task_get_return_on_cancel() argument
1168 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_get_return_on_cancel()
1171 return task->return_on_cancel ? TRUE : FALSE; in g_task_get_return_on_cancel()
1185 g_task_get_source_tag (GTask *task) in g_task_get_source_tag() argument
1187 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_source_tag()
1189 return task->source_tag; in g_task_get_source_tag()
1202 g_task_get_name (GTask *task) in g_task_get_name() argument
1204 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_get_name()
1206 return task->name; in g_task_get_name()
1210 g_task_return_now (GTask *task) in g_task_return_now() argument
1212 TRACE (GIO_TASK_BEFORE_RETURN (task, task->source_object, task->callback, in g_task_return_now()
1213 task->callback_data)); in g_task_return_now()
1215 g_main_context_push_thread_default (task->context); in g_task_return_now()
1217 if (task->callback != NULL) in g_task_return_now()
1219 task->callback (task->source_object, in g_task_return_now()
1220 G_ASYNC_RESULT (task), in g_task_return_now()
1221 task->callback_data); in g_task_return_now()
1224 task->completed = TRUE; in g_task_return_now()
1225 g_object_notify (G_OBJECT (task), "completed"); in g_task_return_now()
1227 g_main_context_pop_thread_default (task->context); in g_task_return_now()
1231 complete_in_idle_cb (gpointer task) in complete_in_idle_cb() argument
1233 g_task_return_now (task); in complete_in_idle_cb()
1234 g_object_unref (task); in complete_in_idle_cb()
1245 g_task_return (GTask *task, in g_task_return() argument
1252 task->ever_returned = TRUE; in g_task_return()
1255 task->result_set = TRUE; in g_task_return()
1257 if (task->synchronous) in g_task_return()
1265 if (G_TASK_IS_THREADED (task) && type != G_TASK_RETURN_FROM_THREAD) in g_task_return()
1268 g_object_ref (task); in g_task_return()
1274 if (source && g_source_get_context (source) == task->context) in g_task_return()
1279 if (g_source_get_time (source) > task->creation_time) in g_task_return()
1287 if (!g_cancellable_is_cancelled (task->cancellable)) in g_task_return()
1289 g_task_return_now (task); in g_task_return()
1290 g_object_unref (task); in g_task_return()
1299 (task->name != NULL) ? task->name : "(unnamed)"); in g_task_return()
1302 g_task_attach_source (task, source, complete_in_idle_cb); in g_task_return()
1337 g_task_thread_complete (GTask *task) in g_task_thread_complete() argument
1339 g_mutex_lock (&task->lock); in g_task_thread_complete()
1340 if (task->thread_complete) in g_task_thread_complete()
1345 g_mutex_unlock (&task->lock); in g_task_thread_complete()
1349 TRACE (GIO_TASK_AFTER_RUN_IN_THREAD (task, task->thread_cancelled)); in g_task_thread_complete()
1351 task->thread_complete = TRUE; in g_task_thread_complete()
1352 g_mutex_unlock (&task->lock); in g_task_thread_complete()
1354 if (task->cancellable) in g_task_thread_complete()
1355 g_signal_handlers_disconnect_by_func (task->cancellable, task_thread_cancelled, task); in g_task_thread_complete()
1357 if (task->synchronous) in g_task_thread_complete()
1358 g_cond_signal (&task->cond); in g_task_thread_complete()
1360 g_task_return (task, G_TASK_RETURN_FROM_THREAD); in g_task_thread_complete()
1426 GTask *task = thread_data; in g_task_thread_pool_thread() local
1430 task->task_func (task, task->source_object, task->task_data, in g_task_thread_pool_thread()
1431 task->cancellable); in g_task_thread_pool_thread()
1432 g_task_thread_complete (task); in g_task_thread_pool_thread()
1433 g_object_unref (task); in g_task_thread_pool_thread()
1442 GTask *task = user_data; in task_thread_cancelled() local
1447 g_thread_pool_move_to_front (task_pool, task); in task_thread_cancelled()
1449 g_mutex_lock (&task->lock); in task_thread_cancelled()
1450 task->thread_cancelled = TRUE; in task_thread_cancelled()
1452 if (!task->return_on_cancel) in task_thread_cancelled()
1454 g_mutex_unlock (&task->lock); in task_thread_cancelled()
1462 g_mutex_unlock (&task->lock); in task_thread_cancelled()
1463 g_task_thread_complete (task); in task_thread_cancelled()
1467 task_thread_cancelled_disconnect_notify (gpointer task, in task_thread_cancelled_disconnect_notify() argument
1470 g_object_unref (task); in task_thread_cancelled_disconnect_notify()
1474 g_task_start_task_thread (GTask *task, in g_task_start_task_thread() argument
1477 g_mutex_init (&task->lock); in g_task_start_task_thread()
1478 g_cond_init (&task->cond); in g_task_start_task_thread()
1480 g_mutex_lock (&task->lock); in g_task_start_task_thread()
1482 TRACE (GIO_TASK_BEFORE_RUN_IN_THREAD (task, task_func)); in g_task_start_task_thread()
1484 task->task_func = task_func; in g_task_start_task_thread()
1486 if (task->cancellable) in g_task_start_task_thread()
1488 if (task->return_on_cancel && in g_task_start_task_thread()
1489 g_cancellable_set_error_if_cancelled (task->cancellable, in g_task_start_task_thread()
1490 &task->error)) in g_task_start_task_thread()
1492 task->thread_cancelled = task->thread_complete = TRUE; in g_task_start_task_thread()
1493 TRACE (GIO_TASK_AFTER_RUN_IN_THREAD (task, task->thread_cancelled)); in g_task_start_task_thread()
1494 g_thread_pool_push (task_pool, g_object_ref (task), NULL); in g_task_start_task_thread()
1506 g_signal_connect_data (task->cancellable, "cancelled", in g_task_start_task_thread()
1508 g_object_ref (task), in g_task_start_task_thread()
1513 task->blocking_other_task = TRUE; in g_task_start_task_thread()
1514 g_thread_pool_push (task_pool, g_object_ref (task), NULL); in g_task_start_task_thread()
1538 g_task_run_in_thread (GTask *task, in g_task_run_in_thread() argument
1541 g_return_if_fail (G_IS_TASK (task)); in g_task_run_in_thread()
1543 g_object_ref (task); in g_task_run_in_thread()
1544 g_task_start_task_thread (task, task_func); in g_task_run_in_thread()
1549 if (task->thread_complete) in g_task_run_in_thread()
1551 g_mutex_unlock (&task->lock); in g_task_run_in_thread()
1552 g_task_return (task, G_TASK_RETURN_FROM_THREAD); in g_task_run_in_thread()
1555 g_mutex_unlock (&task->lock); in g_task_run_in_thread()
1557 g_object_unref (task); in g_task_run_in_thread()
1585 g_task_run_in_thread_sync (GTask *task, in g_task_run_in_thread_sync() argument
1588 g_return_if_fail (G_IS_TASK (task)); in g_task_run_in_thread_sync()
1590 g_object_ref (task); in g_task_run_in_thread_sync()
1592 task->synchronous = TRUE; in g_task_run_in_thread_sync()
1593 g_task_start_task_thread (task, task_func); in g_task_run_in_thread_sync()
1595 while (!task->thread_complete) in g_task_run_in_thread_sync()
1596 g_cond_wait (&task->cond, &task->lock); in g_task_run_in_thread_sync()
1598 g_mutex_unlock (&task->lock); in g_task_run_in_thread_sync()
1600 TRACE (GIO_TASK_BEFORE_RETURN (task, task->source_object, in g_task_run_in_thread_sync()
1605 task->completed = TRUE; in g_task_run_in_thread_sync()
1606 g_object_notify (G_OBJECT (task), "completed"); in g_task_run_in_thread_sync()
1608 g_object_unref (task); in g_task_run_in_thread_sync()
1630 g_task_attach_source (GTask *task, in g_task_attach_source() argument
1634 g_return_if_fail (G_IS_TASK (task)); in g_task_attach_source()
1637 g_object_ref (task), g_object_unref); in g_task_attach_source()
1638 g_source_set_priority (source, task->priority); in g_task_attach_source()
1639 if (task->name != NULL) in g_task_attach_source()
1640 g_source_set_name (source, task->name); in g_task_attach_source()
1642 g_source_attach (source, task->context); in g_task_attach_source()
1647 g_task_propagate_error (GTask *task, in g_task_propagate_error() argument
1652 if (task->check_cancellable && in g_task_propagate_error()
1653 g_cancellable_set_error_if_cancelled (task->cancellable, error)) in g_task_propagate_error()
1655 else if (task->error) in g_task_propagate_error()
1657 g_propagate_error (error, task->error); in g_task_propagate_error()
1658 task->error = NULL; in g_task_propagate_error()
1659 task->had_error = TRUE; in g_task_propagate_error()
1665 TRACE (GIO_TASK_PROPAGATE (task, error_set)); in g_task_propagate_error()
1699 g_task_return_pointer (GTask *task, in g_task_return_pointer() argument
1703 g_return_if_fail (G_IS_TASK (task)); in g_task_return_pointer()
1704 g_return_if_fail (!task->ever_returned); in g_task_return_pointer()
1706 task->result.pointer = result; in g_task_return_pointer()
1707 task->result_destroy = result_destroy; in g_task_return_pointer()
1709 g_task_return (task, G_TASK_RETURN_SUCCESS); in g_task_return_pointer()
1731 g_task_propagate_pointer (GTask *task, in g_task_propagate_pointer() argument
1734 g_return_val_if_fail (G_IS_TASK (task), NULL); in g_task_propagate_pointer()
1736 if (g_task_propagate_error (task, error)) in g_task_propagate_pointer()
1739 g_return_val_if_fail (task->result_set, NULL); in g_task_propagate_pointer()
1741 task->result_destroy = NULL; in g_task_propagate_pointer()
1742 task->result_set = FALSE; in g_task_propagate_pointer()
1743 return task->result.pointer; in g_task_propagate_pointer()
1758 g_task_return_int (GTask *task, in g_task_return_int() argument
1761 g_return_if_fail (G_IS_TASK (task)); in g_task_return_int()
1762 g_return_if_fail (!task->ever_returned); in g_task_return_int()
1764 task->result.size = result; in g_task_return_int()
1766 g_task_return (task, G_TASK_RETURN_SUCCESS); in g_task_return_int()
1787 g_task_propagate_int (GTask *task, in g_task_propagate_int() argument
1790 g_return_val_if_fail (G_IS_TASK (task), -1); in g_task_propagate_int()
1792 if (g_task_propagate_error (task, error)) in g_task_propagate_int()
1795 g_return_val_if_fail (task->result_set, -1); in g_task_propagate_int()
1797 task->result_set = FALSE; in g_task_propagate_int()
1798 return task->result.size; in g_task_propagate_int()
1813 g_task_return_boolean (GTask *task, in g_task_return_boolean() argument
1816 g_return_if_fail (G_IS_TASK (task)); in g_task_return_boolean()
1817 g_return_if_fail (!task->ever_returned); in g_task_return_boolean()
1819 task->result.boolean = result; in g_task_return_boolean()
1821 g_task_return (task, G_TASK_RETURN_SUCCESS); in g_task_return_boolean()
1842 g_task_propagate_boolean (GTask *task, in g_task_propagate_boolean() argument
1845 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_propagate_boolean()
1847 if (g_task_propagate_error (task, error)) in g_task_propagate_boolean()
1850 g_return_val_if_fail (task->result_set, FALSE); in g_task_propagate_boolean()
1852 task->result_set = FALSE; in g_task_propagate_boolean()
1853 return task->result.boolean; in g_task_propagate_boolean()
1876 g_task_return_error (GTask *task, in g_task_return_error() argument
1879 g_return_if_fail (G_IS_TASK (task)); in g_task_return_error()
1880 g_return_if_fail (!task->ever_returned); in g_task_return_error()
1883 task->error = error; in g_task_return_error()
1885 g_task_return (task, G_TASK_RETURN_ERROR); in g_task_return_error()
1906 g_task_return_new_error (GTask *task, in g_task_return_new_error() argument
1919 g_task_return_error (task, error); in g_task_return_new_error()
1936 g_task_return_error_if_cancelled (GTask *task) in g_task_return_error_if_cancelled() argument
1940 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_return_error_if_cancelled()
1941 g_return_val_if_fail (!task->ever_returned, FALSE); in g_task_return_error_if_cancelled()
1943 if (g_cancellable_set_error_if_cancelled (task->cancellable, &error)) in g_task_return_error_if_cancelled()
1948 g_clear_error (&task->error); in g_task_return_error_if_cancelled()
1949 task->error = error; in g_task_return_error_if_cancelled()
1951 g_task_return (task, G_TASK_RETURN_ERROR); in g_task_return_error_if_cancelled()
1969 g_task_had_error (GTask *task) in g_task_had_error() argument
1971 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_had_error()
1973 if (task->error != NULL || task->had_error) in g_task_had_error()
1976 if (task->check_cancellable && g_cancellable_is_cancelled (task->cancellable)) in g_task_had_error()
2007 g_task_return_value (GTask *task, in g_task_return_value() argument
2012 g_return_if_fail (G_IS_TASK (task)); in g_task_return_value()
2013 g_return_if_fail (!task->ever_returned); in g_task_return_value()
2028 g_task_return_pointer (task, value, value_free); in g_task_return_value()
2053 g_task_propagate_value (GTask *task, in g_task_propagate_value() argument
2057 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_propagate_value()
2061 if (g_task_propagate_error (task, error)) in g_task_propagate_value()
2064 g_return_val_if_fail (task->result_set, FALSE); in g_task_propagate_value()
2065 g_return_val_if_fail (task->result_destroy == value_free, FALSE); in g_task_propagate_value()
2067 memcpy (value, task->result.pointer, sizeof (GValue)); in g_task_propagate_value()
2068 g_free (task->result.pointer); in g_task_propagate_value()
2070 task->result_destroy = NULL; in g_task_propagate_value()
2071 task->result_set = FALSE; in g_task_propagate_value()
2089 g_task_get_completed (GTask *task) in g_task_get_completed() argument
2091 g_return_val_if_fail (G_IS_TASK (task), FALSE); in g_task_get_completed()
2094 return task->completed ? TRUE : FALSE; in g_task_get_completed()
2194 GTask *task = G_TASK (object); in g_task_get_property() local
2199 g_value_set_boolean (value, g_task_get_completed (task)); in g_task_get_property()