summaryrefslogtreecommitdiff
path: root/apps/buffering.c
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2007-10-27 04:16:41 +0000
committerBrandon Low <lostlogic@rockbox.org>2007-10-27 04:16:41 +0000
commit14b6f437bbaaddaa47e6fb991a57c74e691b8c2b (patch)
treeff69bc062a12c23f459dc1d67ccd5cae2789fc47 /apps/buffering.c
parent404c6fbdb288de0e88eeb7484e2ab524ef438871 (diff)
downloadrockbox-14b6f437bbaaddaa47e6fb991a57c74e691b8c2b.tar.gz
rockbox-14b6f437bbaaddaa47e6fb991a57c74e691b8c2b.zip
Make buffering initialization versus reset separate functions to avoid double initializing threads or mutexes more easily
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15327 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/buffering.c')
-rw-r--r--apps/buffering.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index b8fd16f870..08726a5582 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -1189,8 +1189,23 @@ void buffering_thread(void)
1189 } 1189 }
1190} 1190}
1191 1191
1192void buffering_init(void) {
1193 mutex_init(&llist_mutex);
1194
1195 conf_filechunk = BUFFERING_DEFAULT_FILECHUNK;
1196 conf_watermark = BUFFERING_DEFAULT_WATERMARK;
1197
1198 buffering_thread_p = create_thread( buffering_thread, buffering_stack,
1199 sizeof(buffering_stack), 0,
1200 buffering_thread_name IF_PRIO(, PRIORITY_BUFFERING)
1201 IF_COP(, CPU));
1202
1203 queue_init(&buffering_queue, true);
1204 queue_enable_queue_send(&buffering_queue, &buffering_queue_sender_list);
1205}
1206
1192/* Initialise the buffering subsystem */ 1207/* Initialise the buffering subsystem */
1193bool buffering_init(char *buf, size_t buflen) 1208bool buffering_reset(char *buf, size_t buflen)
1194{ 1209{
1195 if (!buf || !buflen) 1210 if (!buf || !buflen)
1196 return false; 1211 return false;
@@ -1211,27 +1226,11 @@ bool buffering_init(char *buf, size_t buflen)
1211 buffer_callback_count = 0; 1226 buffer_callback_count = 0;
1212 memset(buffer_low_callback_funcs, 0, sizeof(buffer_low_callback_funcs)); 1227 memset(buffer_low_callback_funcs, 0, sizeof(buffer_low_callback_funcs));
1213 1228
1214 mutex_init(&llist_mutex);
1215
1216 conf_filechunk = BUFFERING_DEFAULT_FILECHUNK;
1217 conf_watermark = BUFFERING_DEFAULT_WATERMARK;
1218
1219 /* Set the high watermark as 75% full...or 25% empty :) */ 1229 /* Set the high watermark as 75% full...or 25% empty :) */
1220#if MEM > 8 1230#if MEM > 8
1221 high_watermark = 3*buflen / 4; 1231 high_watermark = 3*buflen / 4;
1222#endif 1232#endif
1223 1233
1224 if (buffering_thread_p == NULL)
1225 {
1226 buffering_thread_p = create_thread( buffering_thread, buffering_stack,
1227 sizeof(buffering_stack), 0,
1228 buffering_thread_name IF_PRIO(, PRIORITY_BUFFERING)
1229 IF_COP(, CPU));
1230
1231 queue_init(&buffering_queue, true);
1232 queue_enable_queue_send(&buffering_queue, &buffering_queue_sender_list);
1233 }
1234
1235 return true; 1234 return true;
1236} 1235}
1237 1236