2017-04-21 2 views
1

코드를 생성하는 데 gdbus-codegen을 사용하고 있습니다. 그러나 기본적으로 안에 g_dbus_proxy_call() GVariant *parameters으로 전달 된 매개 변수를 가져 오려고합니다.GDBusProxy - 준비 콜백에서 입력 매개 변수 얻기

나는 this 포인터가 필요하기 때문에 gpointer user_data을 사용하고 싶지 않습니다.

어떻게하면됩니까?

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

답변

2

당신은

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

를 사용할 수 있으며, user_dataCallbackArguments를 전달합니다.

+0

CallbackArguments에 동적으로 메모리를 할당하고 콜백에서이를 삭제하도록 제안 하시겠습니까? 콜백이 호출되도록 보장됩니까? –

+2

표준 접근 방식은 동적으로이 클로저를 할당하는 것입니다. 콜백에서 그것을 파괴하십시오. 콜백은 [GMainContext'] (https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html)가 충분히 반복적으로 수행되는 한 정확히 한 번 호출되도록 보장됩니다. 완료하는 조작. [GAsyncResult'] (https://developer.gnome.org/gio/stable/GAsyncResult.html)를 사용하는 모든 비동기 작업을 처리 할 수있는 관용적 인 방법입니다. –