From 11ac0b3f2a7d2abc0ae6127752559b1ffafbebff Mon Sep 17 00:00:00 2001 From: Wincent Balin Date: Tue, 4 Aug 2009 02:04:24 +0000 Subject: PDBox: Minor addition and bugfixes. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22148 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/pdbox/PDa/src/d_soundfile.c | 4 +++- apps/plugins/pdbox/PDa/src/x_net.c | 5 +++-- apps/plugins/pdbox/pdbox-func.c | 38 ++++++++++++++++++++++++++++++-- apps/plugins/pdbox/pdbox-net.c | 7 +++++- 4 files changed, 48 insertions(+), 6 deletions(-) (limited to 'apps') diff --git a/apps/plugins/pdbox/PDa/src/d_soundfile.c b/apps/plugins/pdbox/PDa/src/d_soundfile.c index 74c41a78d4..49247b5ad9 100644 --- a/apps/plugins/pdbox/PDa/src/d_soundfile.c +++ b/apps/plugins/pdbox/PDa/src/d_soundfile.c @@ -1118,7 +1118,9 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s, if (finalsize > bytelimit / (channels * bytespersamp)) finalsize = bytelimit / (channels * bytespersamp); #ifdef ROCKBOX - fp = open(filename, O_RDONLY); + fp = open_soundfile(canvas_getdir(x->x_canvas)->s_name, filename, + headersize, &bytespersamp, &bigendian, &channels, &bytelimit, + skipframes); #else fp = fdopen(fd, "rb"); #endif diff --git a/apps/plugins/pdbox/PDa/src/x_net.c b/apps/plugins/pdbox/PDa/src/x_net.c index aa19f78ec0..dc9eff989d 100644 --- a/apps/plugins/pdbox/PDa/src/x_net.c +++ b/apps/plugins/pdbox/PDa/src/x_net.c @@ -317,6 +317,7 @@ static void *netreceive_new(t_symbol *compatflag, x = (t_netreceive *) pd_new(netreceive_class); x->x_msgout = outlet_new(&x->x_obj, &s_anything); + x->x_connectout = 0; x->x_nconnections = 0; x->x_udp = udp; @@ -428,8 +429,8 @@ static void netreceive_free(t_netreceive *x) #ifdef ROCKBOX /* Basically a reimplementation of socketreceiver_getudp() from s_inter.c */ -t_binbuf* inbinbuf; -void outlet_setstacklim(void); +extern t_binbuf* inbinbuf; +extern void outlet_setstacklim(void); void rockbox_receive_callback(struct datagram* dg) { diff --git a/apps/plugins/pdbox/pdbox-func.c b/apps/plugins/pdbox/pdbox-func.c index 22c8714b3f..c5a560de67 100644 --- a/apps/plugins/pdbox/pdbox-func.c +++ b/apps/plugins/pdbox/pdbox-func.c @@ -263,8 +263,14 @@ void rb_ftoan(float f, char* out, int size) strcat(out, "."); size--; - /* Calculate first rest and convert it. */ + /* Calculate first rest. */ float rest1 = (f - (float) int_part) * 1000000000.0; + + /* If there is no fractional part, return here. */ + if(rest1 == 0.0f) + return; + + /* Convert the first rest to string. */ int irest1 = (int) rest1; snprintf(sbuf, SBUFSIZE-1, "%09d", irest1); @@ -278,8 +284,26 @@ void rb_ftoan(float f, char* out, int size) if(size <= 0) return; - /* Calculate second rest and convert it. */ + /* Calculate second rest. */ float rest2 = (rest1 - (float) irest1) * 1000000000.0; + + /* If no second rest, check whether + the output string has unwanted zero trail, + remove it and end processing here. */ + if(rest2 == 0.0f) + { + char* zerotrail = out + strlen(out) - 1; + + for(; zerotrail >= out; zerotrail--) + { + if(*zerotrail == '0') + *zerotrail = '\0'; + else + return; + } + } + + /* Convert second rest. */ int irest2 = (int) rest2; snprintf(sbuf, SBUFSIZE-1, "%09d", irest2); @@ -287,6 +311,16 @@ void rb_ftoan(float f, char* out, int size) int rest2_len = strlen(sbuf); int rest2_minlen = MIN(size, rest2_len); strncat(out, sbuf, rest2_minlen); + + /* Cut trailing zeroes. */ + char* zerotrail = out + strlen(out) - 1; + for(;zerotrail >= out; zerotrail--) + { + if(*zerotrail == '0') + *zerotrail = '\0'; + else + return; + } } diff --git a/apps/plugins/pdbox/pdbox-net.c b/apps/plugins/pdbox/pdbox-net.c index f0f7013488..03ef6bf6cb 100644 --- a/apps/plugins/pdbox/pdbox-net.c +++ b/apps/plugins/pdbox/pdbox-net.c @@ -103,7 +103,12 @@ bool receive_datagram(struct event_queue* route, /* Copy datagram. */ memcpy(buffer, (struct datagram*) event.data, sizeof(struct datagram)); - /* Free datagram buffer. */ + /* Clear datagram event. */ + memset(((struct datagram*) event.data)->data, + 0, + ((struct datagram*) event.data)->size); + + /* Free datagram event. */ ((struct datagram*) event.data)->used = false; /* Everything went ok. */ -- cgit v1.2.3