summaryrefslogtreecommitdiff
path: root/snd-dac.c
diff options
context:
space:
mode:
Diffstat (limited to 'snd-dac.c')
-rw-r--r--snd-dac.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/snd-dac.c b/snd-dac.c
index 3317319..15ecc7c 100644
--- a/snd-dac.c
+++ b/snd-dac.c
@@ -2690,23 +2690,33 @@ static char *xen_player_to_string(xen_player *v)
return(buf);
}
-Xen_wrap_print(xen_player, print_xen_player, xen_player_to_string)
-
#if HAVE_FORTH || HAVE_RUBY
+Xen_wrap_print(xen_player, print_xen_player, xen_player_to_string)
+
static Xen g_xen_player_to_string(Xen obj)
{
char *vstr;
Xen result;
#define S_xen_player_to_string "player->string"
-
Xen_check_type(xen_is_player(obj), obj, 1, S_xen_player_to_string, "a player");
-
vstr = xen_player_to_string(Xen_to_xen_player(obj));
result = C_string_to_Xen_string(vstr);
free(vstr);
return(result);
}
+#else
+#if HAVE_SCHEME
+static s7_pointer g_xen_player_to_string(s7_scheme *sc, s7_pointer args)
+{
+ char *vstr;
+ Xen result;
+ vstr = xen_player_to_string(Xen_to_xen_player(s7_car(args)));
+ result = C_string_to_Xen_string(vstr);
+ free(vstr);
+ return(result);
+}
+#endif
#endif
@@ -2754,11 +2764,11 @@ static bool s7_xen_player_equalp(void *obj1, void *obj2)
(((xen_player *)obj1)->n == ((xen_player *)obj2)->n));
}
-static Xen s7_xen_player_length(s7_scheme *sc, Xen player)
+static s7_pointer s7_xen_player_length(s7_scheme *sc, s7_pointer args)
{
chan_info *cp;
int index;
- index = Xen_player_to_C_int(player);
+ index = Xen_player_to_C_int(s7_car(args));
cp = players[index]->chans[player_chans[index]];
return(C_llong_to_Xen_llong(current_samples(cp)));
}
@@ -2769,10 +2779,10 @@ static void init_xen_player(void)
{
#if HAVE_SCHEME
xen_player_tag = s7_make_c_type(s7, "<player>");
- s7_c_type_set_print(s7, xen_player_tag, print_xen_player);
s7_c_type_set_free(s7, xen_player_tag, free_xen_player);
s7_c_type_set_equal(s7, xen_player_tag, s7_xen_player_equalp);
s7_c_type_set_length(s7, xen_player_tag, s7_xen_player_length);
+ s7_c_type_set_to_string(s7, xen_player_tag, g_xen_player_to_string);
#else
#if HAVE_RUBY
xen_player_tag = Xen_make_object_type("XenPlayer", sizeof(xen_player));