1

GSignalの最初のシグナルハンドラーコールバックからさらにシグナルハンドラーが呼び出されるのを防ぐにはどうすればよいですか?

たとえば、同じシグナル「mysignal」に対して func1、func2、func3 の 3 つの関数を登録します。func1 が最初に呼び出された場合、func2 と func3 が func1 から呼び出されないようにするにはどうすればよいですか?

これを永続化するべきではありません。ランタイムである必要があります。つまり、func1 は、取得した入力パラメータに基づいて、func2 と func3 がコールバックを取得できるかどうかを決定できます。

4

1 に答える 1

2

g_signal_stop_emission_by_name () と g_signal_stop_emission () はこの問題を解決します。

func1 から g_signal_stop_emission_by_name() を呼び出すと、func2 と func3 へのそれ以上の伝播が防止されます。

于 2010-08-04T10:19:29.007 に答える