Clutter-1.12.0 になったので。テスト

Momonga trunk が clutter-1.12.0 になったので、テストしてみます。これからは、C と GJS の両方でサンプルを書く予定です。C のサンプルをビルドするため、Makefile だけ書いておきます。

# $ pkg-config --cflags clutter-1.0
CFLAGS = -pthread -I/usr/include/clutter-1.0 -I/usr/include/pango-1.0 -I/usr/include/cogl -I/usr/include/cairo -I/usr/include/atk-1.0 -I/usr/include/json-glib-1.0 -I/usr/include/gtk-3.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libdrm -I/usr/include/libpng12 -I/usr/include/pixman-1 -I/usr/include/gio-unix-2.0/  

# $ pkg-config --libs clutter-1.0
LDFLAGS = -pthread -lclutter-1.0 -latk-1.0 -lcogl-pango -ljson-glib-1.0 -lgdk-3 -lXi -lcogl -ldrm -lX11 -lXext -lXdamage -lXcomposite -lgmodule-2.0 -lrt -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 -lXfixes  

コメントに書いてあるように、pkg-config の出力をそのまま CFLAGS と LDFLAGS に記載します。

それでは、 ClutterStage を表示するだけのプログラムを書きます。最初は C です。stage.c というファイル名で保存しています。

#include <clutter/clutter.h>

int
main (int argc, char *argv[])
{
    ClutterStage *stage;
    
    if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
        return 1;
    stage = (ClutterStage*) clutter_stage_new ();
    g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
    clutter_actor_show ((ClutterActor*) stage);
    clutter_main ();
    return 0;
}

説明するまでもありませんが、ヘッダをインクルードして、 clutter_init で初期化して、stage を作成し、destroy シグナルに clutter_main_quit を割り当て、stage を表示して、 clutter_main を呼び出しているだけです。

$ make stage
…
$ ./stage

(stage:5014): Clutter-WARNING **: Whoever translated default:LTR did so wrongly.

警告が出てますが、動いているようです。。。翻訳がおかしいのか警告が出てますね。これは別途調査します。
追記:これ、翻訳ミスでした。翻訳してはならない文を翻訳していたため、このような警告が出てしまいました。http://l10n.gnome.org/vertimus/clutter/master/po/ja

同じ事を GJS で書いてみます。 stage.js という名前で作成します。

#! /usr/bin/env gjs
const Clutter = imports.gi.Clutter;

Clutter.init(null);
let stage = new Clutter.Stage();
stage.connect('destroy', Clutter.main_quit);
stage.show();
Clutter.main();

こちらも、 Clutter を imports してあげて、初期化、stage の作成、シグナル割り当て、表示、メインループの流れです。

$ chmod +x stage.js 
$ ./stage.js 

(gjs:5036): Clutter-WARNING **: Whoever translated default:LTR did so wrongly.

こちらも、きちんと動きます。

clutter-1.12.0 でも変更が盛り沢山です。のんびり調べていく予定です。