古いクラッタコードでキャストを並べ替える際に問題が発生しました。それは、このようなコードを持っていますGTKクラッタテクスチャと通常のクラッタテクスチャをキャストする
static void image_init(CtkImage *image)
{
priv->texture = clutter_texture_new();
...
}
static void refresh_icon (CtkImage *image)
{
CtkImagePrivate *priv = image->priv;
gtk_clutter_texture_set_from_pixbuf (CLUTTER_TEXTURE (priv->texture), priv->pixbuf, NULL);
}
これは、これは時間のコンパイルエラー生成します。
error: passing argument 1 of ‘gtk_clutter_texture_set_from_pixbuf’ from incompatible pointer type [-Werror]
/usr/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-texture.h:99:17: note: expected ‘struct GtkClutterTexture *’ but argument is of type ‘struct ClutterTexture *’
私は、これはコンパイルん、私はGTK_CLUTTER_TEXTUREを使って、それを修正することができると思ったが、実行時エラーと不足しています
に結果のgtk_clutter_texture_set_from_pixbuf (GTK_CLUTTER_TEXTURE (texture), tiled, NULL);
:
GLib-GObject-WARNING **: invalid cast from `ClutterTexture' to `GtkClutterTexture'
Clutter-Gtk-CRITICAL **: gtk_clutter_texture_set_from_pixbuf: assertion `GTK_CLUTTER_IS_TEXTURE (texture)' failed
pixbufsの
何が起こっているのですか?なぜこれが失敗しますか?どのようにデバッグすることができますか?
私は例のコード(謝罪)でそれを示していませんでしたが、私たちはgtk_clutter_texture_newを持っています。私はこの例を複雑にしたくないので、プライベートオブジェクトに添付されています。私はそれを更新しました。 –