2012-06-21 20 views
0

我有一個雜波警告我無法擺脫。處理分配更改回調中的警告

在我的項目中,我有一個自定義佈局,由幾個ClutterConstraint(s)構建,它處理幾個ClutterBox。

其中一個ClutterBox包含許多ClutterTexture(s),放置在一個手工佈局。 爲了獲得(手工佈局),我用g_signal_connect來掛鉤「分配改變」通知,並且在他的回調中,我寫了所有的放置邏輯。

運行時出現的警告是"Clutter-WARNING **: The actor 'ClutterBox' is currently inside an allocation cycle; calling clutter_actor_queue_relayout() is not recommended"

有人可以告訴我如何避免這種警告?

回答

1

在通過分配更改的信號分配父代期間,您無法更改子代的分配 - 即在allocate()虛函數以外的父代分配過程中,無法更改子代的大小或位置。

如果要爲容器實現佈局管理策略,則必須對容器進行子類化並覆蓋其allocate()虛函數;或者,您應該實現ClutterLayoutManager,並將其分配給actor。

ClutterBox在Clutter 1.10中也被棄用:ClutterActor現在提供了完整的API和支持實現佈局管理策略所需的委託。