Function

GLibsteal_handle_id

since: 2.84

Declaration [src]

staticinlineunsignedint
g_steal_handle_id(
unsignedint*handle_pointer
)

Description [src]

Sets handle_pointer to 0, returning the value that was there before.

Conceptually, this transfers the ownership of the handle ID from the referenced variable to the ‘caller’ of the macro (ie: ‘steals’ the handle ID).

This can be very useful to make ownership transfer explicit, or to prevent a handle from being released multiple times. For example:

void
maybe_unsubscribe_signal(ContextStruct*data)
{
if(some_complex_logic(data))
{
g_dbus_connection_signal_unsubscribe(data->connection,
g_steal_handle_id(&data->subscription_id));
// now data->subscription_id isn’t a dangling handle
}
}

While g_clear_handle_id() can be used in many of the same situations as g_steal_handle_id(), this is one situation where it cannot be used, as there is no way to pass the GDBusConnection to a GClearHandleFunc.

Available since: 2.84

This function is not directly available to language bindings.

Parameters

handle_pointer

Type: unsigned int*

A pointer to a handle ID.

The argument will be modified by the function.

Return value

Type: unsigned int

No description available.

AltStyle によって変換されたページ (->オリジナル) /