On Monday, 3 October 2016 at 18:00:53 UTC, Mike Wey wrote:
The signal functions can be found in the gobject.Signals module.

But you should use the GLArea.addOnCreateContext / addOnRender / addOnResize functions to attach a D delegate to the signal. You will still need to link with the OpenGL libraries or use someting like Derelict.

Hi Mike, thanks for your fast answer again!

I just read about this delegates and I liked the concept. I experimented with it for a while and read a bit on the Internet, but I still don't get it working...

My minimal example looks like this:

import gtk.Main;
import gtk.MainWindow;
import gtk.GLArea;
import glgdk.GLContext;

void main(string[] args)
{
        bool render(GLContext context, GLArea area)
        {
                return true;
        }

        Main.init(args);
        MainWindow win = new MainWindow("Hello World");
        GLArea area = new GLArea();

        area.addOnRender(&render,cast(GConnectFlags)0);

        win.add(area);
        win.showAll();
        Main.run();
}

If I compile it, I get this error:

$ dmd main.d -I/usr/local/include/d/gtkd-3 -L-lgtkd-3
main.d(27):
Error: function gtk.GLArea.GLArea.addOnRender
(bool delegate(GLContext, GLArea) dlg, GConnectFlags connectFlags = cast(GConnectFlags)0)
is not callable using argument types
(bool delegate(GLContext context, GLArea area), GConnectFlags)

I cant see, what I am doing wrong... Someone else sees the error? Tomorrow I try to subclass the GLArea, if this works I am happy :) But I'd like to use the handler stuff.

Ah, and I know now, that I have to link against the GL and GLU library, but which module do I have to import, to make the functions visible for the compiler? Or do I need another binding therefore?

Reply via email to