diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-08-30 19:40:09 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-08-30 19:40:09 +0000 |
commit | e88d24a8407ee3fca32cf08399ce895c49c80fc0 (patch) | |
tree | c1f5b054ae0a80ab4b72f33547742577d34c48ec | |
parent | e66ad3e8a86a19b9ef9480bc52766e61955f341d (diff) | |
download | rockbox-e88d24a8407ee3fca32cf08399ce895c49c80fc0.tar.gz rockbox-e88d24a8407ee3fca32cf08399ce895c49c80fc0.zip |
Submit parts of FS#12189 regarding codec API. Replaces access to global settings with a dedicated function to determine if the current track shall be looped. Used by several synthesizer codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30391 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/codec_thread.c | 7 | ||||
-rw-r--r-- | apps/codecs.c | 4 | ||||
-rw-r--r-- | apps/codecs.h | 11 | ||||
-rw-r--r-- | apps/codecs/adx.c | 2 | ||||
-rw-r--r-- | apps/codecs/ay.c | 6 | ||||
-rw-r--r-- | apps/codecs/gbs.c | 4 | ||||
-rw-r--r-- | apps/codecs/hes.c | 4 | ||||
-rw-r--r-- | apps/codecs/kss.c | 2 | ||||
-rw-r--r-- | apps/codecs/nsf.c | 4 | ||||
-rw-r--r-- | apps/codecs/sgc.c | 2 | ||||
-rw-r--r-- | apps/codecs/spc.c | 10 | ||||
-rw-r--r-- | apps/codecs/vgm.c | 2 | ||||
-rw-r--r-- | apps/plugins/test_codec.c | 9 |
13 files changed, 38 insertions, 29 deletions
diff --git a/apps/codec_thread.c b/apps/codec_thread.c index 199bb0e742..90cf07be9f 100644 --- a/apps/codec_thread.c +++ b/apps/codec_thread.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include "buffering.h" | 30 | #include "buffering.h" |
31 | #include "dsp.h" | 31 | #include "dsp.h" |
32 | #include "metadata.h" | 32 | #include "metadata.h" |
33 | #include "settings.h" | ||
33 | 34 | ||
34 | /* Define LOGF_ENABLE to enable logf output in this file */ | 35 | /* Define LOGF_ENABLE to enable logf output in this file */ |
35 | /*#define LOGF_ENABLE*/ | 36 | /*#define LOGF_ENABLE*/ |
@@ -405,6 +406,11 @@ static enum codec_command_action | |||
405 | } | 406 | } |
406 | } | 407 | } |
407 | 408 | ||
409 | static bool codec_loop_track_callback(void) | ||
410 | { | ||
411 | return global_settings.repeat_mode == REPEAT_ONE; | ||
412 | } | ||
413 | |||
408 | /* Initialize codec API */ | 414 | /* Initialize codec API */ |
409 | void codec_init_codec_api(void) | 415 | void codec_init_codec_api(void) |
410 | { | 416 | { |
@@ -421,6 +427,7 @@ void codec_init_codec_api(void) | |||
421 | ci.set_offset = audio_codec_update_offset; | 427 | ci.set_offset = audio_codec_update_offset; |
422 | ci.configure = codec_configure_callback; | 428 | ci.configure = codec_configure_callback; |
423 | ci.get_command = codec_get_command_callback; | 429 | ci.get_command = codec_get_command_callback; |
430 | ci.loop_track = codec_loop_track_callback; | ||
424 | } | 431 | } |
425 | 432 | ||
426 | 433 | ||
diff --git a/apps/codecs.c b/apps/codecs.c index cd4a9d50eb..93542e35ce 100644 --- a/apps/codecs.c +++ b/apps/codecs.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include "sound.h" | 50 | #include "sound.h" |
51 | #include "splash.h" | 51 | #include "splash.h" |
52 | #include "general.h" | 52 | #include "general.h" |
53 | #include "rbpaths.h" | ||
53 | 54 | ||
54 | #define LOGF_ENABLE | 55 | #define LOGF_ENABLE |
55 | #include "logf.h" | 56 | #include "logf.h" |
@@ -97,6 +98,7 @@ struct codec_api ci = { | |||
97 | NULL, /* set_offset */ | 98 | NULL, /* set_offset */ |
98 | NULL, /* configure */ | 99 | NULL, /* configure */ |
99 | NULL, /* get_command */ | 100 | NULL, /* get_command */ |
101 | NULL, /* loop_track */ | ||
100 | 102 | ||
101 | /* kernel/ system */ | 103 | /* kernel/ system */ |
102 | #if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE | 104 | #if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE |
@@ -127,7 +129,6 @@ struct codec_api ci = { | |||
127 | memmove, | 129 | memmove, |
128 | memcmp, | 130 | memcmp, |
129 | memchr, | 131 | memchr, |
130 | strcasestr, | ||
131 | #if defined(DEBUG) || defined(SIMULATOR) | 132 | #if defined(DEBUG) || defined(SIMULATOR) |
132 | debugf, | 133 | debugf, |
133 | #endif | 134 | #endif |
@@ -136,7 +137,6 @@ struct codec_api ci = { | |||
136 | #endif | 137 | #endif |
137 | 138 | ||
138 | (qsort_func)qsort, | 139 | (qsort_func)qsort, |
139 | &global_settings, | ||
140 | 140 | ||
141 | #ifdef RB_PROFILE | 141 | #ifdef RB_PROFILE |
142 | profile_thread, | 142 | profile_thread, |
diff --git a/apps/codecs.h b/apps/codecs.h index dca655da2f..527c59ac9c 100644 --- a/apps/codecs.h +++ b/apps/codecs.h | |||
@@ -44,7 +44,6 @@ | |||
44 | #endif | 44 | #endif |
45 | #include "dsp.h" | 45 | #include "dsp.h" |
46 | #endif | 46 | #endif |
47 | #include "settings.h" | ||
48 | 47 | ||
49 | #include "gcc_extensions.h" | 48 | #include "gcc_extensions.h" |
50 | #include "load_code.h" | 49 | #include "load_code.h" |
@@ -75,12 +74,12 @@ | |||
75 | #define CODEC_ENC_MAGIC 0x52454E43 /* RENC */ | 74 | #define CODEC_ENC_MAGIC 0x52454E43 /* RENC */ |
76 | 75 | ||
77 | /* increase this every time the api struct changes */ | 76 | /* increase this every time the api struct changes */ |
78 | #define CODEC_API_VERSION 42 | 77 | #define CODEC_API_VERSION 43 |
79 | 78 | ||
80 | /* update this to latest version if a change to the api struct breaks | 79 | /* update this to latest version if a change to the api struct breaks |
81 | backwards compatibility (and please take the opportunity to sort in any | 80 | backwards compatibility (and please take the opportunity to sort in any |
82 | new function which are "waiting" at the end of the function table) */ | 81 | new function which are "waiting" at the end of the function table) */ |
83 | #define CODEC_MIN_API_VERSION 42 | 82 | #define CODEC_MIN_API_VERSION 43 |
84 | 83 | ||
85 | /* reasons for calling codec main entrypoint */ | 84 | /* reasons for calling codec main entrypoint */ |
86 | enum codec_entry_call_reason { | 85 | enum codec_entry_call_reason { |
@@ -145,6 +144,8 @@ struct codec_api { | |||
145 | void (*configure)(int setting, intptr_t value); | 144 | void (*configure)(int setting, intptr_t value); |
146 | /* Obtain command action on what to do next */ | 145 | /* Obtain command action on what to do next */ |
147 | enum codec_command_action (*get_command)(intptr_t *param); | 146 | enum codec_command_action (*get_command)(intptr_t *param); |
147 | /* Determine whether the track should be looped, if applicable. */ | ||
148 | bool (*loop_track)(void); | ||
148 | 149 | ||
149 | /* kernel/ system */ | 150 | /* kernel/ system */ |
150 | #if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE | 151 | #if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE |
@@ -180,7 +181,6 @@ struct codec_api { | |||
180 | void* (*memmove)(void *out, const void *in, size_t n); | 181 | void* (*memmove)(void *out, const void *in, size_t n); |
181 | int (*memcmp)(const void *s1, const void *s2, size_t n); | 182 | int (*memcmp)(const void *s1, const void *s2, size_t n); |
182 | void *(*memchr)(const void *s1, int c, size_t n); | 183 | void *(*memchr)(const void *s1, int c, size_t n); |
183 | char *(*strcasestr) (const char* phaystack, const char* pneedle); | ||
184 | 184 | ||
185 | #if defined(DEBUG) || defined(SIMULATOR) | 185 | #if defined(DEBUG) || defined(SIMULATOR) |
186 | void (*debugf)(const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); | 186 | void (*debugf)(const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); |
@@ -193,9 +193,6 @@ struct codec_api { | |||
193 | void (*qsort)(void *base, size_t nmemb, size_t size, | 193 | void (*qsort)(void *base, size_t nmemb, size_t size, |
194 | int(*compar)(const void *, const void *)); | 194 | int(*compar)(const void *, const void *)); |
195 | 195 | ||
196 | /* The ADX codec accesses global_settings to test for REPEAT_ONE mode */ | ||
197 | struct user_settings* global_settings; | ||
198 | |||
199 | #ifdef RB_PROFILE | 196 | #ifdef RB_PROFILE |
200 | void (*profile_thread)(void); | 197 | void (*profile_thread)(void); |
201 | void (*profstop)(void); | 198 | void (*profstop)(void); |
diff --git a/apps/codecs/adx.c b/apps/codecs/adx.c index 8144d5f468..cc7f0320be 100644 --- a/apps/codecs/adx.c +++ b/apps/codecs/adx.c | |||
@@ -239,7 +239,7 @@ enum codec_status codec_run(void) | |||
239 | if (bufoff > end_adr-18*channels && looping) { | 239 | if (bufoff > end_adr-18*channels && looping) { |
240 | DEBUGF("ADX: loop!\n"); | 240 | DEBUGF("ADX: loop!\n"); |
241 | /* check for endless looping */ | 241 | /* check for endless looping */ |
242 | if (ci->global_settings->repeat_mode==REPEAT_ONE) { | 242 | if (ci->loop_track()) { |
243 | loop_count=0; | 243 | loop_count=0; |
244 | fade_count = -1; /* disable fade */ | 244 | fade_count = -1; /* disable fade */ |
245 | } else { | 245 | } else { |
diff --git a/apps/codecs/ay.c b/apps/codecs/ay.c index 48261fbfb4..914ffa9803 100644 --- a/apps/codecs/ay.c +++ b/apps/codecs/ay.c | |||
@@ -17,8 +17,8 @@ static struct Ay_Emu ay_emu; | |||
17 | static void set_codec_track(int t, int multitrack) { | 17 | static void set_codec_track(int t, int multitrack) { |
18 | Ay_start_track(&ay_emu, t); | 18 | Ay_start_track(&ay_emu, t); |
19 | 19 | ||
20 | /* for REPEAT_ONE we disable track limits */ | 20 | /* for loop mode we disable track limits */ |
21 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 21 | if (!ci->loop_track()) { |
22 | Track_set_fade(&ay_emu, Track_get_length( &ay_emu, t ) - 4000, 4000); | 22 | Track_set_fade(&ay_emu, Track_get_length( &ay_emu, t ) - 4000, 4000); |
23 | } | 23 | } |
24 | if (multitrack) ci->set_elapsed(t*1000); /* t is track no to display */ | 24 | if (multitrack) ci->set_elapsed(t*1000); /* t is track no to display */ |
@@ -111,7 +111,7 @@ next_track: | |||
111 | ci->seek_complete(); | 111 | ci->seek_complete(); |
112 | 112 | ||
113 | /* Set fade again */ | 113 | /* Set fade again */ |
114 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 114 | if (!ci->loop_track()) { |
115 | Track_set_fade(&ay_emu, Track_get_length( &ay_emu, track ) - 4000, 4000); | 115 | Track_set_fade(&ay_emu, Track_get_length( &ay_emu, track ) - 4000, 4000); |
116 | } | 116 | } |
117 | } | 117 | } |
diff --git a/apps/codecs/gbs.c b/apps/codecs/gbs.c index 5d3154911b..c9c3420683 100644 --- a/apps/codecs/gbs.c +++ b/apps/codecs/gbs.c | |||
@@ -17,8 +17,8 @@ static struct Gbs_Emu gbs_emu; | |||
17 | static void set_codec_track(int t) { | 17 | static void set_codec_track(int t) { |
18 | Gbs_start_track(&gbs_emu, t); | 18 | Gbs_start_track(&gbs_emu, t); |
19 | 19 | ||
20 | /* for REPEAT_ONE we disable track limits */ | 20 | /* for loop mode we disable track limits */ |
21 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 21 | if (!ci->loop_track()) { |
22 | Track_set_fade(&gbs_emu, Track_get_length( &gbs_emu, t ), 4000); | 22 | Track_set_fade(&gbs_emu, Track_get_length( &gbs_emu, t ), 4000); |
23 | } | 23 | } |
24 | ci->set_elapsed(t*1000); /* t is track no to display */ | 24 | ci->set_elapsed(t*1000); /* t is track no to display */ |
diff --git a/apps/codecs/hes.c b/apps/codecs/hes.c index 8c216ed060..c84134c01b 100644 --- a/apps/codecs/hes.c +++ b/apps/codecs/hes.c | |||
@@ -17,8 +17,8 @@ static struct Hes_Emu hes_emu; | |||
17 | static void set_codec_track(int t) { | 17 | static void set_codec_track(int t) { |
18 | Hes_start_track(&hes_emu, t); | 18 | Hes_start_track(&hes_emu, t); |
19 | 19 | ||
20 | /* for REPEAT_ONE we disable track limits */ | 20 | /* for loop mode we disable track limits */ |
21 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 21 | if (!ci->loop_track()) { |
22 | Track_set_fade(&hes_emu, Track_get_length( &hes_emu, t ), 4000); | 22 | Track_set_fade(&hes_emu, Track_get_length( &hes_emu, t ), 4000); |
23 | } | 23 | } |
24 | ci->set_elapsed(t*1000); /* t is track no to display */ | 24 | ci->set_elapsed(t*1000); /* t is track no to display */ |
diff --git a/apps/codecs/kss.c b/apps/codecs/kss.c index 62dd05551e..f519b3c706 100644 --- a/apps/codecs/kss.c +++ b/apps/codecs/kss.c | |||
@@ -18,7 +18,7 @@ static void set_codec_track(int t) { | |||
18 | Kss_start_track(&kss_emu, t); | 18 | Kss_start_track(&kss_emu, t); |
19 | 19 | ||
20 | /* for REPEAT_ONE we disable track limits */ | 20 | /* for REPEAT_ONE we disable track limits */ |
21 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 21 | if (!ci->loop_track()) { |
22 | Track_set_fade(&kss_emu, Track_get_length( &kss_emu, t ), 4000); | 22 | Track_set_fade(&kss_emu, Track_get_length( &kss_emu, t ), 4000); |
23 | } | 23 | } |
24 | ci->set_elapsed(t*1000); /* t is track no to display */ | 24 | ci->set_elapsed(t*1000); /* t is track no to display */ |
diff --git a/apps/codecs/nsf.c b/apps/codecs/nsf.c index 8899501e05..533972e110 100644 --- a/apps/codecs/nsf.c +++ b/apps/codecs/nsf.c | |||
@@ -20,7 +20,7 @@ static void set_codec_track(int t, int multitrack) { | |||
20 | Nsf_start_track(&nsf_emu, t); | 20 | Nsf_start_track(&nsf_emu, t); |
21 | 21 | ||
22 | /* for REPEAT_ONE we disable track limits */ | 22 | /* for REPEAT_ONE we disable track limits */ |
23 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 23 | if (!ci->loop_track()) { |
24 | Track_set_fade(&nsf_emu, Track_length( &nsf_emu, t ) - 4000, 4000); | 24 | Track_set_fade(&nsf_emu, Track_length( &nsf_emu, t ) - 4000, 4000); |
25 | } | 25 | } |
26 | if (multitrack) ci->set_elapsed(t*1000); /* t is track no to display */ | 26 | if (multitrack) ci->set_elapsed(t*1000); /* t is track no to display */ |
@@ -109,7 +109,7 @@ next_track: | |||
109 | ci->seek_complete(); | 109 | ci->seek_complete(); |
110 | 110 | ||
111 | /* Set fade again */ | 111 | /* Set fade again */ |
112 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 112 | if (!ci->loop_track()) { |
113 | Track_set_fade(&nsf_emu, Track_length( &nsf_emu, track ), 4000); | 113 | Track_set_fade(&nsf_emu, Track_length( &nsf_emu, track ), 4000); |
114 | } | 114 | } |
115 | } | 115 | } |
diff --git a/apps/codecs/sgc.c b/apps/codecs/sgc.c index 2f1f3f88bc..993c606c7e 100644 --- a/apps/codecs/sgc.c +++ b/apps/codecs/sgc.c | |||
@@ -23,7 +23,7 @@ static void set_codec_track(int t) { | |||
23 | Sgc_start_track(&sgc_emu, t); | 23 | Sgc_start_track(&sgc_emu, t); |
24 | 24 | ||
25 | /* for REPEAT_ONE we disable track limits */ | 25 | /* for REPEAT_ONE we disable track limits */ |
26 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 26 | if (!ci->loop_track()) { |
27 | Track_set_fade(&sgc_emu, Track_get_length( &sgc_emu, t ), 4000); | 27 | Track_set_fade(&sgc_emu, Track_get_length( &sgc_emu, t ), 4000); |
28 | } | 28 | } |
29 | ci->set_elapsed(t*1000); /* t is track no to display */ | 29 | ci->set_elapsed(t*1000); /* t is track no to display */ |
diff --git a/apps/codecs/spc.c b/apps/codecs/spc.c index 3b007471a9..94ac9ffadc 100644 --- a/apps/codecs/spc.c +++ b/apps/codecs/spc.c | |||
@@ -477,7 +477,7 @@ static int play_track( void ) | |||
477 | sampleswritten += WAV_CHUNK_SIZE; | 477 | sampleswritten += WAV_CHUNK_SIZE; |
478 | 478 | ||
479 | /* is track timed? */ | 479 | /* is track timed? */ |
480 | if (ci->global_settings->repeat_mode!=REPEAT_ONE && ci->id3->length) { | 480 | if (!ci->loop_track() && ci->id3->length) { |
481 | unsigned long curtime = sampleswritten*1000LL/SAMPLE_RATE; | 481 | unsigned long curtime = sampleswritten*1000LL/SAMPLE_RATE; |
482 | unsigned long lasttimesample = (sampleswritten-WAV_CHUNK_SIZE); | 482 | unsigned long lasttimesample = (sampleswritten-WAV_CHUNK_SIZE); |
483 | 483 | ||
@@ -513,10 +513,10 @@ static int play_track( void ) | |||
513 | 513 | ||
514 | spc_play_send_samples(samples); | 514 | spc_play_send_samples(samples); |
515 | 515 | ||
516 | if (ci->global_settings->repeat_mode!=REPEAT_ONE) | 516 | if (ci->loop_track()) |
517 | ci->set_elapsed(sampleswritten*1000LL/SAMPLE_RATE); | ||
518 | else | ||
519 | ci->set_elapsed(0); | 517 | ci->set_elapsed(0); |
518 | else | ||
519 | ci->set_elapsed(sampleswritten*1000LL/SAMPLE_RATE); | ||
520 | } | 520 | } |
521 | 521 | ||
522 | EXIT_TIMER(total); | 522 | EXIT_TIMER(total); |
@@ -571,7 +571,7 @@ enum codec_status codec_run(void) | |||
571 | 571 | ||
572 | LoadID666(buffer+0x2e); | 572 | LoadID666(buffer+0x2e); |
573 | 573 | ||
574 | if (ci->global_settings->repeat_mode!=REPEAT_ONE && ID666.length==0) { | 574 | if (!ci->loop_track() && ID666.length==0) { |
575 | ID666.length=3*60*1000; /* 3 minutes */ | 575 | ID666.length=3*60*1000; /* 3 minutes */ |
576 | ID666.fade=5*1000; /* 5 seconds */ | 576 | ID666.fade=5*1000; /* 5 seconds */ |
577 | } | 577 | } |
diff --git a/apps/codecs/vgm.c b/apps/codecs/vgm.c index 9c8619c7b8..9e4f88779c 100644 --- a/apps/codecs/vgm.c +++ b/apps/codecs/vgm.c | |||
@@ -105,7 +105,7 @@ enum codec_status codec_run(void) | |||
105 | Vgm_start_track(&vgm_emu); | 105 | Vgm_start_track(&vgm_emu); |
106 | 106 | ||
107 | /* for REPEAT_ONE we disable track limits */ | 107 | /* for REPEAT_ONE we disable track limits */ |
108 | if (ci->global_settings->repeat_mode != REPEAT_ONE) { | 108 | if (!ci->loop_track()) { |
109 | Track_set_fade(&vgm_emu, ci->id3->length - 4000, 4000); | 109 | Track_set_fade(&vgm_emu, ci->id3->length - 4000, 4000); |
110 | } | 110 | } |
111 | 111 | ||
diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c index b1525ca30a..6b6ba00840 100644 --- a/apps/plugins/test_codec.c +++ b/apps/plugins/test_codec.c | |||
@@ -505,6 +505,12 @@ static enum codec_command_action get_command(intptr_t *param) | |||
505 | (void)param; | 505 | (void)param; |
506 | } | 506 | } |
507 | 507 | ||
508 | /* Some codecs call this to determine whether they should loop. */ | ||
509 | static bool loop_track(void) | ||
510 | { | ||
511 | return false; | ||
512 | } | ||
513 | |||
508 | static void set_offset(size_t value) | 514 | static void set_offset(size_t value) |
509 | { | 515 | { |
510 | ci.id3->offset = value; | 516 | ci.id3->offset = value; |
@@ -561,6 +567,7 @@ static void init_ci(void) | |||
561 | ci.set_offset = set_offset; | 567 | ci.set_offset = set_offset; |
562 | ci.configure = configure; | 568 | ci.configure = configure; |
563 | ci.get_command = get_command; | 569 | ci.get_command = get_command; |
570 | ci.loop_track = loop_track; | ||
564 | 571 | ||
565 | /* --- "Core" functions --- */ | 572 | /* --- "Core" functions --- */ |
566 | 573 | ||
@@ -578,7 +585,6 @@ static void init_ci(void) | |||
578 | ci.memmove = rb->memmove; | 585 | ci.memmove = rb->memmove; |
579 | ci.memcmp = rb->memcmp; | 586 | ci.memcmp = rb->memcmp; |
580 | ci.memchr = rb->memchr; | 587 | ci.memchr = rb->memchr; |
581 | ci.strcasestr = rb->strcasestr; | ||
582 | #if defined(DEBUG) || defined(SIMULATOR) | 588 | #if defined(DEBUG) || defined(SIMULATOR) |
583 | ci.debugf = rb->debugf; | 589 | ci.debugf = rb->debugf; |
584 | #endif | 590 | #endif |
@@ -587,7 +593,6 @@ static void init_ci(void) | |||
587 | #endif | 593 | #endif |
588 | 594 | ||
589 | ci.qsort = rb->qsort; | 595 | ci.qsort = rb->qsort; |
590 | ci.global_settings = rb->global_settings; | ||
591 | 596 | ||
592 | #ifdef RB_PROFILE | 597 | #ifdef RB_PROFILE |
593 | ci.profile_thread = rb->profile_thread; | 598 | ci.profile_thread = rb->profile_thread; |