patch added by anonymous on Tue Oct 24 17:51:45 2017

diff -ur -x '*compile*' -x '*.setup' qt-light-0.991-1/main.cpp qt-light-0.991-2/main.cpp
--- qt-light-0.991-1/main.cpp   2017-10-21 02:35:00.225901257 +0200
+++ qt-light-0.991-2/main.cpp   2017-10-24 02:15:38.033934084 +0200
@@ -1,9 +1,10 @@
 /* main.cpp */

-
+#include <stdio.h>
 #include <QtGui>
 #include <QtUiTools>
 #include <QGLWidget>
+#include <QGLFormat>
 #include <chicken.h>
 #include <assert.h>

@@ -34,6 +35,10 @@

 public slots:
   void slot() { C_callback(CHICKEN_gc_root_ref(thunk), 0); }
+  void slot(int p1) {
+    C_save(C_fix(p1));
+    C_callback(CHICKEN_gc_root_ref(thunk), 1);
+  }
 };

@@ -42,7 +47,7 @@
   void *thunk;

 public:
-  GLWidget(char *name, QWidget *parent, C_word proc) : QGLWidget(parent) {
+  GLWidget(char *name, QWidget *parent, C_word proc, QGLFormat format) : QGLWidget(format, parent) {
     setObjectName(name);
     thunk = CHICKEN_new_gc_root();
     CHICKEN_gc_root_set(thunk, proc);
@@ -395,7 +400,20 @@


 const char *qt_classname(qtobject w) { return w->metaObject()->className(); }
-qtwidget qt_gl(char *name, qtwidget parent, C_word proc) { return new GLWidget(name, parent, proc); }
+qtwidget qt_gl(char *name, qtwidget parent, C_word proc, int major, int minor, int profile) {
+  QGLFormat::OpenGLContextProfile qglProfile;
+  switch (profile){
+    case 2: qglProfile = QGLFormat::CoreProfile; break;
+    case 1: qglProfile = QGLFormat::CompatibilityProfile; break;
+    case 0: qglProfile = QGLFormat::NoProfile; break;
+  }
+
+  QGLFormat glFormat;
+  glFormat.setVersion(major, minor);
+  glFormat.setProfile(qglProfile);
+
+  return new GLWidget(name, parent, proc, glFormat);
+}
 void qt_update(qtwidget w) { w->update(); }


diff -ur -x '*compile*' -x '*.setup' qt-light-0.991-1/prototypes.h qt-light-0.991-2/prototypes.h
--- qt-light-0.991-1/prototypes.h       2017-10-20 23:27:29.739226833 +0200
+++ qt-light-0.991-2/prototypes.h       2017-10-24 02:12:27.522025016 +0200
@@ -37,7 +37,7 @@
 double qt_getfloatproperty(qtwidget w, char *prop);
 int qt_getcharproperty(qtwidget w, char *prop);
 int qt_propertytype(qtwidget w, char *prop);
-qtwidget qt_gl(char *name, qtwidget parent, C_word proc);
+qtwidget qt_gl(char *name, qtwidget parent, C_word proc, int major, int minor, int profile);
 void qt_update(qtwidget w);
 qttimer qt_timer(double secs);
 void qt_start(qttimer t);
diff -ur -x '*compile*' -x '*.setup' qt-light-0.991-1/qt-light.scm qt-light-0.991-2/qt-light.scm
--- qt-light-0.991-1/qt-light.scm       2017-10-21 00:24:50.955482702 +0200
+++ qt-light-0.991-2/qt-light.scm       2017-10-24 02:40:14.865822178 +0200
@@ -155,13 +155,19 @@

 (define qt:gl
   (let ((qt:gl qt:gl))
-    (lambda (name parent init resize paint)
+    (lambda (name parent init resize paint #!optional (major 3) (minor 3) (profile "core"))
+      (define profile2
+            (cond ((string=? profile "core")   2)
+                  ((string=? profile "compat") 1)
+                  ((string=? profile "none")   0)
+                  (else (error "Invalid OpenGL profile type."))) )
       (qt:gl
        name parent
        (match-lambda*
         ((0) (init))
         ((1 w h) (resize w h))
-        (_ (paint)) ) ) ) ) )
+        (_ (paint)) )
+       major minor profile2 ) ) ) )

 (define qt:run
   (let ((qt:run qt:run))
Only in qt-light-0.991-2: qt-light.scm~