2017-04-21 19 views
1

gdbus-codegenを使用してコードを生成しています。しかし、基本的にはg_dbus_proxy_call() GVariant *parametersに渡されたパラメータをGAsyncReadyCallback callbackの中に入れたいと思っています。GDBusProxy - 準備完了コールバックで入力パラメータを取得します。

ポインタのために私はgpointer user_dataを使用したくありません。

どうすればよいですか?

https://developer.gnome.org/gio/stable/GDBusProxy.html#g-dbus-proxy-call

答えて

2

あなたは

struct CallbackArguments { 
    YourClass *that; 
    GVariant *call_params; 
} 

を使用してuser_dataとしてCallbackArgumentsを渡すことができます。

+0

コールバックでメモリを動的に割り当ててコールバックで破棄することをお勧めしますか?コールバックが保証されていますか? –

+2

標準的なアプローチは、このクロージャを動的に割り当てることです。コールバックでそれを破壊する。コールバックは、['GMainContext'](https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html)が十分に反復される限り、一度だけ呼び出されることが保証されています完了するための操作。 これは、['GAsyncResult'](https://developer.gnome.org/gio/stable/GAsyncResult.html)を使ったすべての非同期操作を扱うことができる慣用的な方法です。 –

関連する問題