summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-02-20 15:07:03 +0100
committerThomas White <taw@physics.org>2020-02-20 15:07:03 +0100
commit27c34a9e2d210eb00d8bb5a07b57c5373edea98c (patch)
tree5cfd62d29065503767615ebd87781b6f9bbcf80d
parenta8edc2496b37622374ee1077a508265545bc015f (diff)
Add init.scm
-rw-r--r--meson.build9
-rw-r--r--src/init.scm16
-rw-r--r--src/nanolight.gresource.xml7
-rw-r--r--src/scheme.c18
4 files changed, 50 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 87e9882..802b7e2 100644
--- a/meson.build
+++ b/meson.build
@@ -10,6 +10,7 @@ add_project_arguments('-DLOCALEDIR="'+join_paths(get_option('prefix'), get_optio
language : 'c')
# Dependencies
+gnome = import('gnome')
cc = meson.get_compiler('c')
mdep = cc.find_library('m', required : false)
gtk_dep = dependency('gtk+-3.0', required : true)
@@ -20,6 +21,13 @@ soup_dep = dependency('libsoup-2.4', required : true)
guile_dep = dependency('guile-2.2', required : true)
thread_dep = dependency('threads')
+
+# Compiled-in resources
+gresources = gnome.compile_resources('nanolight-resources',
+ 'src/nanolight.gresource.xml',
+ source_dir: 'data', c_name: 'nanolight')
+
+
# Main program
executable('nanolight',
['src/nanolight.c',
@@ -30,5 +38,6 @@ executable('nanolight',
'src/crossfade.c',
'src/scheme.c',
],
+ gresources,
dependencies : [gtk_dep, mdep, soup_dep, guile_dep, thread_dep],
install : true)
diff --git a/src/init.scm b/src/init.scm
new file mode 100644
index 0000000..b6069aa
--- /dev/null
+++ b/src/init.scm
@@ -0,0 +1,16 @@
+(define off
+ (lambda (fix)
+ (set-intensity fix 0)))
+
+(define set-all
+ (lambda (fixtures level)
+ (for-each (lambda (fix)
+ (set-intensity fix level))
+ fixtures)))
+
+(define find-fixture
+ (lambda (fixtures name)
+ (cond
+ [(null? fixtures) #f]
+ [(eq? (fixture-name (car fixtures)) name) (car fixtures)]
+ [else (find-fixture (cdr fixtures) name)])))
diff --git a/src/nanolight.gresource.xml b/src/nanolight.gresource.xml
new file mode 100644
index 0000000..f938d90
--- /dev/null
+++ b/src/nanolight.gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/uk/me/bitwiz/NanoLight">
+ <file>src/init.scm</file>
+ </gresource>
+</gresources>
+
diff --git a/src/scheme.c b/src/scheme.c
index d37578f..b81b1a3 100644
--- a/src/scheme.c
+++ b/src/scheme.c
@@ -84,9 +84,27 @@ void *register_scheme_funcs(void *data)
}
+static void run_init()
+{
+ GBytes *bytes;
+ GError *error = NULL;
+ gsize size;
+ gconstpointer initscm;
+
+ bytes = g_resources_lookup_data("/uk/me/bitwiz/NanoLight/src/init.scm",
+ G_RESOURCE_LOOKUP_FLAGS_NONE,
+ &error);
+ initscm = g_bytes_get_data(bytes, &size);
+ printf("got %p\n", initscm);
+ scm_c_eval_string(initscm);
+ g_bytes_unref(bytes);
+}
+
+
void *run_repl(void *pargsv)
{
scm_with_guile(&register_scheme_funcs, pargsv);
+ run_init();
scm_shell(0, NULL);
return NULL;
}