
[D] Basic Clutter example
By:
JNewt on
Jun 6th, 2011 | syntax:
D | size: 1.04 KB | hits: 104 | expires: Never
module test2;
import std.stdio;
import std.string,
std.conv,
std.c.linux.linux;
pragma(lib, "dl");
char* cstring(string s) { return cast(char*)toStringz(s); }
void main(string[] args)
{
auto lib = dlopen("libclutter-glx-1.0.so", RTLD_NOW | RTLD_GLOBAL);
T getSym(T)(string name)
{
T ret = cast(T)dlsym(lib, cstring(name));
assert(ret !is null);
return ret;
}
auto clutter_init = getSym!(int function(int*, char***))("clutter_init");
auto clutter_main = getSym!(void function())("clutter_main");
auto clutter_stage_get_default = getSym!(void* function())("clutter_stage_get_default");
auto clutter_stage_set_title = getSym!(void function(void*, char*))("clutter_stage_set_title");
auto err = clutter_init(null, null);
if (err != 1)
return; // failed to initialize
writeln("Initialized");
void* stage = clutter_stage_get_default();
writeln("Got default stage");
clutter_stage_set_title(stage, cstring("A window title"));
writeln("Set title on stage");
clutter_main();
dlclose(lib);
}