diff --git a/apps/gui/wps.c b/apps/gui/wps.c index 1acd00d120..a3d7a1bcf1 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -68,7 +68,7 @@ #define RESTORE_WPS_INSTANTLY 0l #define RESTORE_WPS_NEXT_SECOND ((long)(HZ+current_tick)) -#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ +#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ /* 3% of 30min file == 54s step size */ #define MIN_FF_REWIND_STEP 500 @@ -170,7 +170,7 @@ void unpause_action(bool may_fade, bool updatewps) #endif (void)may_fade; -} +} #if CONFIG_CODEC != SWCODEC void fade(bool fade_in, bool updatewps) @@ -189,7 +189,7 @@ void fade(bool fade_in, bool updatewps) sleep(HZ/10); /* let audio thread run */ audio_resume(); - + if (updatewps) update_non_static(); @@ -227,7 +227,7 @@ void fade(bool fade_in, bool updatewps) sound_set_volume(global_settings.volume); } } -#endif /* SWCODEC */ +#endif /* SWCODEC */ static bool update_onvol_change(enum screen_type screen) { @@ -298,8 +298,8 @@ static int skintouch_to_wps(struct wps_data *data) bool ffwd_rew(int button) { - unsigned int step = 0; /* current ff/rewind step */ - unsigned int max_step = 0; /* maximum ff/rewind step */ + unsigned int step = 0; /* current ff/rewind step */ + unsigned int max_step = 0; /* maximum ff/rewind step */ int ff_rewind_count = 0; /* current ff/rewind count (in ticks) */ int direction = -1; /* forward=1 or backward=-1 */ bool exit = false; @@ -323,7 +323,7 @@ bool ffwd_rew(int button) if (direction == 1) { /* fast forwarding, calc max step relative to end */ - max_step = (skin_get_global_state()->id3->length - + max_step = (skin_get_global_state()->id3->length - (skin_get_global_state()->id3->elapsed + ff_rewind_count)) * FF_REWIND_MAX_PERCENT / 100; @@ -360,7 +360,7 @@ bool ffwd_rew(int button) FOR_NB_SCREENS(i) skin_get_gwps(WPS, i)->display->stop_scroll(); #endif - if (direction > 0) + if (direction > 0) status_set_ffmode(STATUS_FASTFORWARD); else status_set_ffmode(STATUS_FASTBACKWARD); @@ -489,8 +489,8 @@ static void change_dir(int direction) audio_prev_dir(); else if (direction > 0) audio_next_dir(); - /* prevent the next dir to immediatly start being ffw'd */ - action_wait_for_release(); + /* prevent the next dir to immediatly start being ffw'd */ + action_wait_for_release(); } static void prev_track(unsigned long skip_thresh) @@ -644,7 +644,7 @@ static void gwps_leave_wps(void) skin_backdrop_show(sb_get_backdrop(i)); #endif viewportmanager_theme_undo(i, skin_has_sbs(i, skin_get_gwps(WPS, i)->data)); - + } #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) @@ -676,7 +676,7 @@ static void gwps_enter_wps(void) #if LCD_DEPTH > 1 if (display->depth > 1) { - struct skin_viewport *svp = skin_find_item(VP_DEFAULT_LABEL_STRING, + struct skin_viewport *svp = skin_find_item(VP_DEFAULT_LABEL_STRING, SKIN_FIND_VP, gwps->data); if (svp) { @@ -722,7 +722,7 @@ void wps_do_playpause(bool updatewps) #endif } } - + /* The WPS can be left in two ways: * a) call a function, which draws over the wps. In this case, the wps @@ -755,7 +755,7 @@ long gui_wps_show(void) ab_reset_markers(); #endif wps_state_init(); - + while ( 1 ) { bool audio_paused = (audio_status() & AUDIO_STATUS_PAUSE)?true:false; @@ -773,7 +773,7 @@ long gui_wps_show(void) #endif } } - button = skin_wait_for_action(WPS, CONTEXT_WPS|ALLOW_SOFTLOCK, + button = skin_wait_for_action(WPS, CONTEXT_WPS|ALLOW_SOFTLOCK, restore ? 1 : HZ/5); /* Exit if audio has stopped playing. This happens e.g. at end of @@ -820,17 +820,17 @@ long gui_wps_show(void) { bool hotkey = button == ACTION_WPS_HOTKEY; gwps_leave_wps(); - int retval = onplay(state->id3->path, + int retval = onplay(state->id3->path, FILE_ATTR_AUDIO, CONTEXT_WPS, hotkey); /* if music is stopped in the context menu we want to exit the wps */ - if (retval == ONPLAY_MAINMENU + if (retval == ONPLAY_MAINMENU || !audio_status()) return GO_TO_ROOT; else if (retval == ONPLAY_PLAYLIST) return GO_TO_PLAYLIST_VIEWER; #ifdef HAVE_PICTUREFLOW_INTEGRATION else if (retval == ONPLAY_PICTUREFLOW) - return GO_TO_PICTUREFLOW; + return GO_TO_PICTUREFLOW; #endif restore = true; } @@ -860,7 +860,7 @@ long gui_wps_show(void) global_settings.volume--; vol_changed = true; break; - /* fast forward + /* fast forward OR next dir if this is straight after ACTION_WPS_SKIPNEXT */ case ACTION_WPS_SEEKFWD: if (global_settings.party_mode) @@ -880,7 +880,7 @@ long gui_wps_show(void) ffwd_rew(ACTION_WPS_SEEKFWD); last_right = last_left = 0; break; - /* fast rewind + /* fast rewind OR prev dir if this is straight after ACTION_WPS_SKIPPREV,*/ case ACTION_WPS_SEEKBACK: if (global_settings.party_mode) diff --git a/apps/main.c b/apps/main.c index 57257aff66..7f44d89a6a 100644 --- a/apps/main.c +++ b/apps/main.c @@ -183,7 +183,7 @@ int main(void) #ifdef AUTOROCK { char filename[MAX_PATH]; - const char *file = + const char *file = #ifdef APPLICATION ROCKBOX_DIR #else @@ -210,15 +210,15 @@ static int init_dircache(bool preinit) #ifdef HAVE_DIRCACHE int result = 0; bool clear = false; - + if (preinit) dircache_init(); - + if (!global_settings.dircache) return 0; - + # ifdef HAVE_EEPROM_SETTINGS - if (firmware_settings.initialized && firmware_settings.disk_clean + if (firmware_settings.initialized && firmware_settings.disk_clean && preinit) { result = dircache_load(); @@ -233,7 +233,7 @@ static int init_dircache(bool preinit) splash(0, str(LANG_SCANNING_DISK)); clear = true; } - + dircache_build(global_status.dircache_size); } } @@ -242,7 +242,7 @@ static int init_dircache(bool preinit) { if (preinit) return -1; - + if (!dircache_is_enabled() && !dircache_is_initializing()) { @@ -253,7 +253,7 @@ static int init_dircache(bool preinit) } result = dircache_build(global_status.dircache_size); } - + if (result < 0) { /* Initialization of dircache failed. Manual action is @@ -263,7 +263,7 @@ static int init_dircache(bool preinit) global_settings.dircache = false; } } - + if (clear) { backlight_on(); @@ -271,7 +271,7 @@ static int init_dircache(bool preinit) global_status.dircache_size = dircache_get_cache_size(); status_save(); } - + return result; #else (void)preinit; @@ -288,7 +288,7 @@ static void init_tagcache(void) long talked_tick = 0; #endif tagcache_init(); - + while (!tagcache_is_initialized()) { int ret = tagcache_get_commit_step(); @@ -322,7 +322,7 @@ static void init_tagcache(void) } #else lcd_double_height(false); - lcd_putsf(0, 1, " DB [%d/%d]", ret, + lcd_putsf(0, 1, " DB [%d/%d]", ret, tagcache_get_max_commit_step()); lcd_update(); #endif @@ -370,7 +370,7 @@ static void init(void) #if (CONFIG_PLATFORM & PLATFORM_ANDROID) notification_init(); #endif - lang_init(core_language_builtin, language_strings, + lang_init(core_language_builtin, language_strings, LANG_LAST_INDEX_IN_ARRAY); #ifdef DEBUG debug_init(); @@ -452,7 +452,7 @@ static void init(void) #endif i2c_init(); - + power_init(); enable_irq(); @@ -471,13 +471,13 @@ static void init(void) global_status.font_id[i] = FONT_SYSFIXED; font_init(); #endif - + settings_reset(); CHART(">show_logo"); show_logo(); CHART("settings_apply(true)"); - settings_apply(true); + settings_apply(true); CHART("init_dircache(false)"); init_dircache(false); diff --git a/apps/menus/playback_menu.c b/apps/menus/playback_menu.c index 89472d45b9..dbfb44f15d 100644 --- a/apps/menus/playback_menu.c +++ b/apps/menus/playback_menu.c @@ -62,7 +62,7 @@ static int setcrossfadeonexit_callback(int action,const struct menu_item_ex *thi /***********************************/ /* PLAYBACK MENU */ static int playback_callback(int action,const struct menu_item_ex *this_item); - + MENUITEM_SETTING(shuffle_item, &global_settings.playlist_shuffle, playback_callback); MENUITEM_SETTING(repeat_mode, &global_settings.repeat_mode, playback_callback); MENUITEM_SETTING(play_selected, &global_settings.play_selected, NULL); @@ -84,7 +84,7 @@ static int buffermargin_callback(int action,const struct menu_item_ex *this_item } return action; } -#else +#else # define buffermargin_callback NULL #endif MENUITEM_SETTING(buffer_margin, &global_settings.buffer_margin, @@ -120,7 +120,7 @@ static int replaygain_callback(int action,const struct menu_item_ex *this_item) (void)this_item; switch (action) { - case ACTION_EXIT_MENUITEM: /* on exit */ + case ACTION_EXIT_MENUITEM: /* on exit */ replaygain_update(); break; } @@ -137,7 +137,7 @@ MENUITEM_SETTING(replaygain_preamp, replaygain_callback); MAKE_MENU(replaygain_settings_menu,ID2P(LANG_REPLAYGAIN),0, Icon_NOICON, &replaygain_type, &replaygain_noclip, &replaygain_preamp); - + MENUITEM_SETTING(beep, &global_settings.beep ,NULL); #endif /* CONFIG_CODEC == SWCODEC */ @@ -155,7 +155,7 @@ static int audioscrobbler_callback(int action,const struct menu_item_ex *this_it case ACTION_EXIT_MENUITEM: /* on exit */ if (!scrobbler_is_enabled() && global_settings.audioscrobbler) scrobbler_init(); - + if(scrobbler_is_enabled() && !global_settings.audioscrobbler) scrobbler_shutdown(); break; @@ -205,13 +205,13 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0, Icon_Playback_menu, &shuffle_item, &repeat_mode, &play_selected, &ff_rewind_settings_menu, -#ifdef HAVE_DISK_STORAGE +#ifdef HAVE_DISK_STORAGE &buffer_margin, #endif &fade_on_stop, &party_mode, - + #if (CONFIG_CODEC == SWCODEC) && defined(HAVE_CROSSFADE) - &crossfade_settings_menu, + &crossfade_settings_menu, #endif #if CONFIG_CODEC == SWCODEC @@ -235,7 +235,7 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0, ,&play_frequency #endif ); - + static int playback_callback(int action,const struct menu_item_ex *this_item) { static bool old_shuffle = false; diff --git a/apps/misc.c b/apps/misc.c index d7d4bdd2f9..91244f2c39 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -1,10 +1,10 @@ /*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2002 by Daniel Stenberg @@ -424,7 +424,7 @@ bool list_stop_handler(void) if (TIME_BEFORE(current_tick, last_off + HZ/2)) { - if (charger_inserted()) + if (charger_inserted()) { charging_splash(); ret = true; /* screen is dirty, caller needs to refresh */ @@ -1064,7 +1064,7 @@ void format_time(char* buf, int buf_size, long t) int const seconds = time % 60; const char * const sign = &"-"[t < 0 ? 0 : 1]; - if ( hours == 0 ) + if ( hours == 0 ) { snprintf(buf, buf_size, "%s%d:%02d", sign, minutes, seconds); } @@ -1177,7 +1177,7 @@ bool parse_color(enum screen_type screen, char *text, int *value) { (void)text; (void)value; /* silence warnings on mono bitmap */ (void)screen; - + #ifdef HAVE_LCD_COLOR if (screens[screen].depth > 2) { @@ -1214,7 +1214,7 @@ int clamp_value_wrap(int value, int max, int min) #endif #endif #define MAX_ACTIVITY_DEPTH 12 -static enum current_activity +static enum current_activity current_activity[MAX_ACTIVITY_DEPTH] = {ACTIVITY_UNKNOWN}; static int current_activity_top = 0; void push_current_activity(enum current_activity screen) diff --git a/apps/mpeg.c b/apps/mpeg.c index 0ecf68fc53..5c206c79f1 100644 --- a/apps/mpeg.c +++ b/apps/mpeg.c @@ -382,7 +382,7 @@ static void set_elapsed(struct mp3entry* id3) break; } } - + i--; if (i < 0) i = 0; @@ -395,7 +395,7 @@ static void set_elapsed(struct mp3entry* id3) } else { - nextpos = 256; + nextpos = 256; } remainder = id3->offset - (relpos * (id3->filesize / 256)); @@ -425,7 +425,7 @@ int audio_get_file_pos(void) { int pos = -1; struct mp3entry *id3 = audio_current_track(); - + if (id3->vbr) { if (id3->has_toc) @@ -433,20 +433,20 @@ int audio_get_file_pos(void) /* Use the TOC to find the new position */ unsigned int percent, remainder; int curtoc, nexttoc, plen; - + percent = (id3->elapsed*100)/id3->length; if (percent > 99) percent = 99; - + curtoc = id3->toc[percent]; - + if (percent < 99) nexttoc = id3->toc[percent+1]; else nexttoc = 256; - + pos = (id3->filesize/256)*curtoc; - + /* Use the remainder to get a more accurate position */ remainder = (id3->elapsed*100)%id3->length; remainder = (remainder*100)/id3->length; @@ -478,7 +478,7 @@ int audio_get_file_pos(void) /* skip past id3v2 tag and other leading garbage */ pos = id3->first_frame_offset; } - return pos; + return pos; } unsigned long mpeg_get_last_header(void) @@ -637,9 +637,9 @@ static void recalculate_watermark(int bitrate) and set a high threshold */ if(bitrate == 0) bitrate = 320; - + bytes_per_sec = bitrate * 1000 / 8; - + if(time) { /* No drive spins up faster than 3.5s */ @@ -693,7 +693,7 @@ void audio_get_debugdata(struct audio_debug *dbgdata) static void dbg_timer_start(void) { /* We are using timer 2 */ - + TSTR &= ~0x04; /* Stop the timer */ TSNC &= ~0x04; /* No synchronization */ TMDR &= ~0x44; /* Operate normally */ @@ -813,7 +813,7 @@ void rec_tick(void) } data = *(unsigned char *)0x04000000; /* read data byte */ - + xor_b(0x08, &PADRH); /* Set PR inactive */ mpeg_audiobuf[audiobuf_write++] = data; @@ -888,7 +888,7 @@ static void transfer_end(const void** ppbuf, size_t* psize) audiobuf_read += last_dma_chunk_size; if(audiobuf_read >= audiobuflen) audiobuf_read = 0; - + /* First, check if we are on a track boundary */ if (num_tracks_in_memory() > 1) { @@ -901,17 +901,17 @@ static void transfer_end(const void** ppbuf, size_t* psize) } } } - + unplayed_space_left = get_unplayed_space(); - + space_until_end_of_buffer = audiobuflen - audiobuf_read; - + if(!filling && unplayed_space_left < low_watermark) { filling = true; queue_post(&mpeg_queue, MPEG_NEED_DATA, GENERATE_UNBUFFER_EVENTS); } - + if(unplayed_space_left) { last_dma_chunk_size = MIN(0x2000, unplayed_space_left); @@ -953,7 +953,7 @@ static void transfer_end(const void** ppbuf, size_t* psize) /* Update the watermark debug level */ if(unplayed_space_left < lowest_watermark_level) lowest_watermark_level = unplayed_space_left; - + DEBUGF("DMA underrun.\n"); dma_underrun = true; } @@ -975,7 +975,7 @@ static struct trackdata *add_track_to_tag_list(const char *filename) { struct trackdata *track; bool send_nid3_event; - + if(num_tracks_in_memory() >= MAX_TRACK_ENTRIES) { DEBUGF("Tag memory is full\n"); @@ -983,7 +983,7 @@ static struct trackdata *add_track_to_tag_list(const char *filename) } track = &trackdata[track_write_idx]; - + /* grab id3 tag of new file and remember where in memory it starts */ if(mp3info(&track->id3, filename)) @@ -1032,14 +1032,14 @@ static int new_file(int steps) start += track->load_ahead_index; } } - + do { trackname = playlist_peek(start + steps, name_buf, sizeof(name_buf)); if ( !trackname ) return -1; - + DEBUGF("Loading %s\n", trackname); - + mpeg_file = open(trackname, O_RDONLY); if(mpeg_file < 0) { DEBUGF("Couldn't open file: %s\n",trackname); @@ -1065,7 +1065,7 @@ static int new_file(int steps) else { /* skip past id3v2 tag */ - lseek(mpeg_file, + lseek(mpeg_file, track->id3.first_frame_offset, SEEK_SET); track->id3.index = steps; @@ -1079,7 +1079,7 @@ static int new_file(int steps) else recalculate_watermark( track->id3.bitrate); - + } } @@ -1212,7 +1212,7 @@ static void start_playback_if_ready(void) playable_space = audiobuf_swapwrite - audiobuf_read; if(playable_space < 0) playable_space += audiobuflen; - + /* See if we have started playing yet. If not, do it. */ if(play_pending || dma_underrun) { @@ -1273,7 +1273,7 @@ static bool swap_one_chunk(void) else amount_to_swap = MIN(MPEG_SWAP_CHUNKSIZE, free_space_left); } - + if(audiobuf_write < audiobuf_swapwrite) amount_to_swap = MIN(audiobuflen - audiobuf_swapwrite, amount_to_swap); @@ -1342,7 +1342,7 @@ static void mpeg_thread(void) } start_playback_if_ready(); - + switch(ev.id) { case MPEG_PLAY: @@ -1376,8 +1376,8 @@ static void mpeg_thread(void) } else { /* skip past id3v2 tag */ - lseek(mpeg_file, - get_trackdata(0)->id3.first_frame_offset, + lseek(mpeg_file, + get_trackdata(0)->id3.first_frame_offset, SEEK_SET); } @@ -1421,7 +1421,7 @@ static void mpeg_thread(void) if ( current_track_counter == pause_track ) last_dma_tick += current_tick - pause_tick; else - last_dma_tick = current_tick; + last_dma_tick = current_tick; pause_tick = 0; mp3_play_pause(true); } @@ -1481,7 +1481,7 @@ static void mpeg_thread(void) /* Make it read more data */ filling = true; queue_post(&mpeg_queue, MPEG_NEED_DATA, 0); - + /* Tell the file loading code that we want to start playing as soon as we have some data */ play_pending = true; @@ -1498,7 +1498,7 @@ static void mpeg_thread(void) if (!playlist_check(-1)) break; - + /* stop the current stream */ end_current_track(); @@ -1540,7 +1540,7 @@ static void mpeg_thread(void) id3->elapsed = oldtime; break; } - + if (mpeg_file >= 0) curpos = lseek(mpeg_file, 0, SEEK_CUR); else @@ -1581,7 +1581,7 @@ static void mpeg_thread(void) hasn't yet advanced up to the new location of the read pointer. We just move it, there is no need to swap data that won't be played anyway. */ - + if (unswapped_space_left > unplayed_space_left) { DEBUGF("Moved swapwrite\n"); @@ -1599,9 +1599,9 @@ static void mpeg_thread(void) else { /* resume will start at new position */ - last_dma_chunk_size = + last_dma_chunk_size = MIN(0x2000, get_unplayed_space_current_song()); - mp3_play_data(mpeg_audiobuf + audiobuf_read, + mp3_play_data(mpeg_audiobuf + audiobuf_read, last_dma_chunk_size, transfer_end); dma_underrun = false; } @@ -1696,7 +1696,7 @@ static void mpeg_thread(void) /* Make sure that we don't fill the entire buffer */ free_space_left -= MPEG_HIGH_WATER; - + if (ev.data == GENERATE_UNBUFFER_EVENTS) generate_unbuffer_events(); @@ -1748,12 +1748,12 @@ static void mpeg_thread(void) static const unsigned char tag[] = "TAG"; int taglen = 128; int tagptr = audiobuf_write + len - 128; - + /* Really rare case: entire potential tag wasn't read in this call AND audiobuf_write < 128 */ if (tagptr < 0) tagptr += audiobuflen; - + for(i = 0;i < 3;i++) { if(tagptr >= audiobuflen) @@ -1801,10 +1801,10 @@ static void mpeg_thread(void) { DEBUGF("MPEG read error\n"); } - + close(mpeg_file); mpeg_file = -1; - + if(new_file(1) < 0) { /* No more data to play */ @@ -1819,7 +1819,7 @@ static void mpeg_thread(void) } } break; - + case MPEG_TRACK_CHANGE: track_change(); break; @@ -1838,7 +1838,7 @@ static void mpeg_thread(void) usb_wait_for_disconnect(&mpeg_queue); break; #endif /* !USB_NONE */ - + #if CONFIG_CODEC == MAS3587F case MPEG_INIT_RECORDING: init_recording(); @@ -1876,7 +1876,7 @@ static void mpeg_thread(void) mpeg_audiobuf+startpos, startpos); saved_header = mpeg_get_last_header(); - + mem_find_next_frame(startpos, &offset, 1800, saved_header, mpeg_audiobuf, audiobuflen); @@ -1912,10 +1912,10 @@ static void mpeg_thread(void) /* delayed until buffer is saved, don't open yet */ strcpy(delayed_filename, recording_filename); - mpeg_file = -1; + mpeg_file = -1; break; - + case MPEG_STOP: DEBUGF("MPEG_STOP\n"); @@ -1974,7 +1974,7 @@ static void mpeg_thread(void) mas_readmem(MAS_BANK_D0, MAS_D0_MPEG_FRAME_COUNT, &frame_count_end, 1); - + last_rec_time = current_tick - record_start_time; record_start_time = current_tick; if (paused) @@ -2014,7 +2014,7 @@ static void mpeg_thread(void) queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0); break; - case MPEG_SAVE_DATA: + case MPEG_SAVE_DATA: if (saving_status == BUFFER_FULL) save_endpos = audiobuf_write; @@ -2098,7 +2098,7 @@ static void mpeg_thread(void) queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0); break; - + case MPEG_PRERECORDING_TICK: if(!is_prerecording) break; @@ -2118,21 +2118,21 @@ static void mpeg_thread(void) break; case MPEG_INIT_PLAYBACK: - /* Stop the prerecording */ + /* Stop the prerecording */ stop_recording(); reset_mp3_buffer(); mp3_play_init(); init_playback_done = true; break; - + case MPEG_PAUSE_RECORDING: pause_recording(); break; - + case MPEG_RESUME_RECORDING: resume_recording(); break; - + case SYS_USB_CONNECTED: /* We can safely go to USB mode if no recording is taking place */ @@ -2142,11 +2142,11 @@ static void mpeg_thread(void) function, to put the MAS in monitoring mode, to save power. */ stop_recording(); - + /* Tell the USB thread that we are safe */ DEBUGF("mpeg_thread got SYS_USB_CONNECTED\n"); usb_acknowledge(SYS_USB_CONNECTED_ACK); - + /* Wait until the USB cable is extracted again */ usb_wait_for_disconnect(&mpeg_queue); } @@ -2166,7 +2166,7 @@ struct mp3entry* audio_current_track(void) if(num_tracks_in_memory()) { struct mp3entry *id3 = &get_trackdata(0)->id3; -#endif +#endif if (!checked_for_cuesheet && curr_cuesheet && id3->cuesheet == NULL) { checked_for_cuesheet = true; /* only check once per track */ @@ -2239,9 +2239,9 @@ static void init_recording(void) is_prerecording = false; mpeg_stop_done = true; - + mas_reset(); - + /* Enable the audio CODEC and the DSP core, max analog voltage range */ rc = mas_direct_config_write(MAS_CONTROL, 0x8c00); if(rc < 0) @@ -2257,7 +2257,7 @@ static void init_recording(void) /* Perform black magic as described by the data sheet */ if((mas_version_code & 0x0fff) == 0x0102) - { + { DEBUGF("Performing MAS black magic for B2 version\n"); mas_writereg(0xa3, 0x98); mas_writereg(0x94, 0xfffff); @@ -2272,7 +2272,7 @@ static void init_recording(void) /* Copy left channel to right (mono mode) */ mas_codec_writereg(8, 0x8000); - + /* ADC scale 0%, DSP scale 100% We use the DSP output for monitoring, because it works with all sources including S/PDIF */ @@ -2282,7 +2282,7 @@ static void init_recording(void) /* No mute */ shadow_soft_mute = 0; mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute, 1); - + #ifdef HAVE_SPDIF_OUT val = 0x09; /* Disable SDO and SDI, low impedance S/PDIF outputs */ #else @@ -2308,7 +2308,7 @@ static void init_recording(void) DMA transfer has taken place. Now let's wait for some data to be encoded. */ sleep(HZ/5); - + /* Now set it to Monitoring mode as default, saves power */ shadow_io_control_main = 0x525; mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1); @@ -2331,7 +2331,7 @@ static void init_recording(void) void audio_record(const char *filename) { mpeg_errno = 0; - + strlcpy(recording_filename, filename, MAX_PATH); queue_post(&mpeg_queue, MPEG_RECORD, 0); @@ -2412,13 +2412,13 @@ static void start_prerecording(void) unsigned long val; DEBUGF("Starting prerecording\n"); - + prerecord_index = 0; prerecord_count = 0; prerecord_timeout = current_tick + HZ; memset(prerecord_buffer, 0, sizeof(prerecord_buffer)); reset_mp3_buffer(); - + is_prerecording = true; /* Stop monitoring and start the encoder */ @@ -2431,7 +2431,7 @@ static void start_prerecording(void) { mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1); } while(val & 1); - + is_recording = true; saving_status = NOT_SAVING; @@ -2463,7 +2463,7 @@ static void start_recording(void) mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1); } while(val & 1); } - + is_recording = true; saving_status = NOT_SAVING; paused = false; @@ -2493,7 +2493,7 @@ static void pause_recording(void) static void resume_recording(void) { paused = false; - + /* Clear the pause bit */ shadow_soft_mute &= ~2; mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute, 1); @@ -2515,7 +2515,7 @@ static void stop_recording(void) if(!paused) pause_recording(); sleep(HZ/5); - + demand_irq_enable(false); is_recording = false; @@ -2529,7 +2529,7 @@ static void stop_recording(void) shadow_io_control_main |= (1 << 10); mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1); DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main); - + /* Wait until the DSP has accepted the settings */ do { @@ -2565,7 +2565,7 @@ void audio_set_recording_options(struct audio_recording_options *options) mas_store_pllfreq(24576000); else mas_store_pllfreq(22579000); -#endif +#endif shadow_soft_mute = options->rec_editable?4:0; mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute,1); @@ -2647,7 +2647,7 @@ unsigned long audio_recorded_time(void) { if(is_prerecording) return prerecord_count * HZ; - + if(is_recording) { if(paused) @@ -2663,7 +2663,7 @@ unsigned long audio_num_recorded_bytes(void) { int num_bytes; int index; - + if(is_recording) { if(is_prerecording) @@ -2671,11 +2671,11 @@ unsigned long audio_num_recorded_bytes(void) index = prerecord_index - prerecord_count; if(index < 0) index += prerecording_max_seconds; - + num_bytes = audiobuf_write - prerecord_buffer[index].mempos; if(num_bytes < 0) num_bytes += audiobuflen; - + return num_bytes; } else @@ -2796,7 +2796,7 @@ void audio_play(long offset) int steps=0; is_playing = true; - + do { trackname = playlist_peek(steps, name_buf, sizeof(name_buf)); if (!trackname) @@ -2849,7 +2849,7 @@ void audio_stop(void) /* dummy */ void audio_stop_recording(void) { - audio_stop(); + audio_stop(); } void audio_hard_stop(void) @@ -2966,7 +2966,7 @@ int audio_status(void) if(paused) ret |= AUDIO_STATUS_PAUSE; - + #if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR) if(is_recording && !is_prerecording) ret |= AUDIO_STATUS_RECORD; @@ -2977,7 +2977,7 @@ int audio_status(void) if(mpeg_errno) ret |= AUDIO_STATUS_ERROR; - + return ret; } diff --git a/apps/playback.h b/apps/playback.h index 865e9a313b..0a9d22cde2 100644 --- a/apps/playback.h +++ b/apps/playback.h @@ -58,7 +58,7 @@ int playback_claim_aa_slot(struct dim *dim); /* * Releases the albumart slot with given id - * + * * Save to call from other threads */ void playback_release_aa_slot(int slot); diff --git a/apps/scrobbler.c b/apps/scrobbler.c index 1a0ad9390e..be60cc15af 100644 --- a/apps/scrobbler.c +++ b/apps/scrobbler.c @@ -140,7 +140,7 @@ static void write_cache(void) fd = open(scrobbler_file, O_WRONLY | O_APPEND); if(fd >= 0) { - logf("SCROBBLER: writing %d entries", cache_pos); + logf("SCROBBLER: writing %d entries", cache_pos); /* copy data to temporary storage in case data moves during I/O */ char temp_buf[SCROBBLER_CACHE_LEN]; for ( i=0; i < cache_pos; i++ ) diff --git a/apps/tagtree.c b/apps/tagtree.c index 5766d2892e..6b0c6aa3dd 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -19,7 +19,7 @@ * ****************************************************************************/ -/** +/** * Basic structure on this file was copied from dbtree.c and modified to * support the tag cache interface. */ @@ -117,13 +117,13 @@ static bool sort_inverse; /* * "%3d. %s" autoscore title %sort = "inverse" %limit = "100" - * + * * valid = true * formatstr = "%-3d. %s" * tags[0] = tag_autoscore * tags[1] = tag_title * tag_count = 2 - * + * * limit = 100 * sort_inverse = true */ @@ -135,7 +135,7 @@ struct display_format { int group_id; int tags[MAX_TAGS]; int tag_count; - + int limit; int strip; bool sort_inverse; @@ -288,17 +288,17 @@ static int get_token_str(char *buf, int size) if (*strp == '\0' || *(++strp) == '\0') return -1; - + /* Read the data. */ while (*strp != '"' && *strp != '\0' && --size > 0) *(buf++) = *(strp++); - + *buf = '\0'; if (*strp != '"') return -2; - + strp++; - + return 0; } @@ -345,11 +345,11 @@ static int get_tag(int *tag) }; char buf[128]; unsigned int i; - + /* Find the start. */ while ((*strp == ' ' || *strp == '>') && *strp != '\0') strp++; - + if (*strp == '\0' || *strp == '?') return 0; @@ -433,16 +433,16 @@ static bool read_clause(struct tagcache_search_clause *clause) { char buf[SEARCHSTR_SIZE]; unsigned int i; - + if (get_tag(&clause->tag) <= 0) return false; - + if (get_clause(&clause->type) <= 0) return false; - + if (get_token_str(buf, sizeof buf) < 0) return false; - + for (i=0; isource = source_runtime+i; clause->str = tagtree_alloc(SEARCHSTR_SIZE); - } - else + } + else { clause->source = source_constant; clause->str = tagtree_strdup(buf); - } - + } + if (TAGCACHE_IS_NUMERIC(clause->tag)) { clause->numeric = true; @@ -468,24 +468,24 @@ static bool read_clause(struct tagcache_search_clause *clause) else clause->numeric = false; - logf("got clause: %d/%d [%s]", clause->tag, clause->type, clause->str); - + logf("got clause: %d/%d [%s]", clause->tag, clause->type, clause->str); + return true; } static bool read_variable(char *buf, int size) { int condition; - + if (!get_clause(&condition)) return false; - + if (condition != clause_is) return false; - + if (get_token_str(buf, size) < 0) return false; - + return true; } @@ -495,12 +495,12 @@ static int get_format_str(struct display_format *fmt) int ret; char buf[128]; int i; - + memset(fmt, 0, sizeof(struct display_format)); - + if (get_token_str(fmt->name, sizeof fmt->name) < 0) return -10; - + /* Determine the group id */ fmt->group_id = 0; for (i = 0; i < format_count; i++) @@ -510,30 +510,30 @@ static int get_format_str(struct display_format *fmt) fmt->group_id = formats[i]->group_id; break; } - + if (formats[i]->group_id > fmt->group_id) fmt->group_id = formats[i]->group_id; } - + if (i == format_count) fmt->group_id++; - + logf("format: (%d) %s", fmt->group_id, fmt->name); - + if (get_token_str(buf, sizeof buf) < 0) return -10; - + fmt->formatstr = tagtree_strdup(buf); - + while (fmt->tag_count < MAX_TAGS) { ret = get_tag(&fmt->tags[fmt->tag_count]); if (ret < 0) return -11; - + if (ret == 0) break; - + switch (fmt->tags[fmt->tag_count]) { case var_sorttype: if (!read_variable(buf, sizeof buf)) @@ -541,24 +541,24 @@ static int get_format_str(struct display_format *fmt) if (!strcasecmp("inverse", buf)) fmt->sort_inverse = true; break; - + case var_limit: if (!read_variable(buf, sizeof buf)) return -13; fmt->limit = atoi(buf); break; - + case var_strip: if (!read_variable(buf, sizeof buf)) return -14; fmt->strip = atoi(buf); break; - + default: fmt->tag_count++; } } - + return 1; } @@ -571,17 +571,17 @@ static int add_format(const char *buf) } strp = buf; - + if (formats[format_count] == NULL) formats[format_count] = tagtree_alloc0(sizeof(struct display_format)); - + if (get_format_str(formats[format_count]) < 0) { logf("get_format_str() parser failed!"); memset(formats[format_count], 0, sizeof(struct display_format)); return -4; } - + while (*strp != '\0' && *strp != '?') strp++; @@ -594,28 +594,28 @@ static int add_format(const char *buf) while (1) { struct tagcache_search_clause *newclause; - + if (clause_count >= TAGCACHE_MAX_CLAUSES) { logf("too many clauses"); break; } - + newclause = tagtree_alloc(sizeof(struct tagcache_search_clause)); - + formats[format_count]->clause[clause_count] = newclause; if (!read_clause(newclause)) break; - + clause_count++; } tagtree_unlock(); - + formats[format_count]->clause_count = clause_count; } - + format_count++; - + return 1; } @@ -624,28 +624,28 @@ static int get_condition(struct search_instruction *inst) struct tagcache_search_clause *new_clause; int clause_count; char buf[128]; - + switch (*strp) { case '=': { int i; - + if (get_token_str(buf, sizeof buf) < 0) return -1; - + for (i = 0; i < format_count; i++) { if (!strcasecmp(formats[i]->name, buf)) break; } - + if (i == format_count) { logf("format not found: %s", buf); return -2; } - + inst->format_id[inst->tagorder_count] = formats[i]->group_id; return 1; } @@ -665,10 +665,10 @@ static int get_condition(struct search_instruction *inst) logf("Too many clauses"); return false; } - + new_clause = tagtree_alloc(sizeof(struct tagcache_search_clause)); inst->clause[inst->tagorder_count][clause_count] = new_clause; - + if (*strp == '|') { strp++; @@ -683,7 +683,7 @@ static int get_condition(struct search_instruction *inst) return -1; } inst->clause_count[inst->tagorder_count]++; - + return 1; } @@ -702,25 +702,25 @@ static bool parse_search(struct menu_entry *entry, const char *str) struct search_instruction *inst = &entry->si; char buf[MAX_PATH]; int i; - + strp = str; - + /* Parse entry name */ if (get_token_str(entry->name, sizeof entry->name) < 0) { logf("No name found."); return false; } - + /* Parse entry type */ if (get_tag(&entry->type) <= 0) return false; - + if (entry->type == menu_load) { if (get_token_str(buf, sizeof buf) < 0) return false; - + /* Find the matching root menu or "create" it */ for (i = 0; i < menu_count; i++) { @@ -730,38 +730,38 @@ static bool parse_search(struct menu_entry *entry, const char *str) return true; } } - + if (menu_count >= TAGMENU_MAX_MENUS) { logf("max menucount reached"); return false; } - + /* Allocate a new menu unless link is found. */ menus[menu_count] = tagtree_alloc0(sizeof(struct menu_root)); strlcpy(menus[menu_count]->id, buf, MAX_MENU_ID_SIZE); entry->link = menu_count; ++menu_count; - + return true; } - + if (entry->type != menu_next) return false; - + while (inst->tagorder_count < MAX_TAGS) { ret = get_tag(&inst->tagorder[inst->tagorder_count]); - if (ret < 0) + if (ret < 0) { logf("Parse error #1"); logf("%s", strp); return false; } - + if (ret == 0) break ; - + logf("tag: %d", inst->tagorder[inst->tagorder_count]); tagtree_lock(); @@ -772,11 +772,11 @@ static bool parse_search(struct menu_entry *entry, const char *str) return false; inst->tagorder_count++; - + if (get_tag(&type) <= 0 || type != menu_next) break; } - + return true; } @@ -787,7 +787,7 @@ static int compare(const void *p1, const void *p2) if (sort_inverse) return strncasecmp(e2->name, e1->name, MAX_PATH); - + return strncasecmp(e1->name, e2->name, MAX_PATH); } @@ -795,13 +795,13 @@ static void tagtree_buffer_event(void *data) { struct tagcache_search tcs; struct mp3entry *id3 = (struct mp3entry*)data; - + /* Do not gather data unless proper setting has been enabled. */ if (!global_settings.runtimedb && !global_settings.autoresume_enable) return; logf("be:%s", id3->path); - + while (! tagcache_is_fully_initialized()) yield(); @@ -810,7 +810,7 @@ static void tagtree_buffer_event(void *data) logf("tc stat: not found: %s", id3->path); return; } - + if (global_settings.runtimedb) { id3->playcount = tagcache_get_numeric(&tcs, tag_playcount); @@ -819,11 +819,11 @@ static void tagtree_buffer_event(void *data) id3->lastplayed = tagcache_get_numeric(&tcs, tag_lastplayed); id3->score = tagcache_get_numeric(&tcs, tag_virt_autoscore) / 10; id3->playtime = tagcache_get_numeric(&tcs, tag_playtime); - + logf("-> %ld/%ld", id3->playcount, id3->playtime); } - - #if CONFIG_CODEC == SWCODEC + + #if CONFIG_CODEC == SWCODEC if (global_settings.autoresume_enable) { /* Load current file resume offset if not already defined (by @@ -832,15 +832,15 @@ static void tagtree_buffer_event(void *data) { id3->offset = tagcache_get_numeric(&tcs, tag_lastoffset); - logf("tagtree_buffer_event: Set offset for %s to %lX\n", + logf("tagtree_buffer_event: Set offset for %s to %lX\n", str_or_empty(id3->title), id3->offset); } } #endif - + /* Store our tagcache index pointer. */ id3->tagcache_idx = tcs.idx_id+1; - + tagcache_search_finish(&tcs); } @@ -849,14 +849,14 @@ static void tagtree_track_finish_event(void *data) long lastplayed; long tagcache_idx; struct mp3entry *id3 = (struct mp3entry*)data; - + /* Do not gather data unless proper setting has been enabled. */ if (!global_settings.runtimedb && !global_settings.autoresume_enable) { logf("runtimedb gathering and autoresume not enabled"); return; } - + tagcache_idx=id3->tagcache_idx; if (!tagcache_idx) { @@ -864,7 +864,7 @@ static void tagtree_track_finish_event(void *data) return; } tagcache_idx--; - + /* Don't process unplayed tracks, or tracks interrupted within the first 15 seconds. */ if (id3->elapsed == 0 @@ -876,24 +876,24 @@ static void tagtree_track_finish_event(void *data) logf("not logging unplayed or skipped track"); return; } - + lastplayed = tagcache_increase_serial(); if (lastplayed < 0) { logf("incorrect tc serial:%ld", lastplayed); return; } - + if (global_settings.runtimedb) { long playcount; long playtime; playcount = id3->playcount + 1; - + /* Ignore the last 15s (crossfade etc.) */ playtime = id3->playtime + MIN(id3->length, id3->elapsed + 15 * 1000); - + logf("ube:%s", id3->path); logf("-> %ld/%ld", playcount, playtime); logf("-> %ld/%ld/%ld", id3->elapsed, id3->length, @@ -905,7 +905,7 @@ static void tagtree_track_finish_event(void *data) tagcache_update_numeric(tagcache_idx, tag_lastplayed, lastplayed); } -#if CONFIG_CODEC == SWCODEC +#if CONFIG_CODEC == SWCODEC if (global_settings.autoresume_enable) { unsigned long offset @@ -913,7 +913,7 @@ static void tagtree_track_finish_event(void *data) tagcache_update_numeric(tagcache_idx, tag_lastoffset, offset); - logf("tagtree_track_finish_event: Save offset for %s: %lX", + logf("tagtree_track_finish_event: Save offset for %s: %lX", str_or_empty(id3->title), offset); } #endif @@ -922,13 +922,13 @@ static void tagtree_track_finish_event(void *data) bool tagtree_export(void) { struct tagcache_search tcs; - + splash(0, str(LANG_CREATING)); if (!tagcache_create_changelog(&tcs)) { splash(HZ*2, ID2P(LANG_FAILED)); } - + return false; } @@ -939,7 +939,7 @@ bool tagtree_import(void) { splash(HZ*2, ID2P(LANG_FAILED)); } - + return false; } @@ -952,16 +952,16 @@ static int parse_line(int n, char *buf, void *parameters) static bool read_menu; int i; char *p; - + (void)parameters; - + /* Strip possible at end of line. */ p = strchr(buf, '\r'); if (p != NULL) *p = '\0'; - + logf("parse:%d/%s", n, buf); - + /* First line, do initialisation. */ if (n == 0) { @@ -970,13 +970,13 @@ static int parse_line(int n, char *buf, void *parameters) logf("Version mismatch"); return -1; } - + read_menu = false; } - + if (buf[0] == '#') return 0; - + if (buf[0] == '\0') { if (read_menu) @@ -986,13 +986,13 @@ static int parse_line(int n, char *buf, void *parameters) } return 0; } - + if (!read_menu) { strp = buf; if (get_tag(&variable) <= 0) return 0; - + switch (variable) { case var_format: @@ -1001,33 +1001,33 @@ static int parse_line(int n, char *buf, void *parameters) logf("Format add fail: %s", data); } break; - + case var_include: if (get_token_str(data, sizeof(data)) < 0) { logf("%%include empty"); return 0; } - + if (!parse_menu(data)) { logf("Load menu fail: %s", data); } break; - + case var_menu_start: if (menu_count >= TAGMENU_MAX_MENUS) { logf("max menucount reached"); return 0; } - + if (get_token_str(data, sizeof data) < 0) { logf("%%menu_start id empty"); return 0; } - + menu = NULL; for (i = 0; i < menu_count; i++) { @@ -1036,15 +1036,15 @@ static int parse_line(int n, char *buf, void *parameters) menu = menus[i]; } } - - if (menu == NULL) + + if (menu == NULL) { menus[menu_count] = tagtree_alloc0(sizeof(struct menu_root)); menu = menus[menu_count]; ++menu_count; strlcpy(menu->id, data, MAX_MENU_ID_SIZE); } - + if (get_token_str(menu->title, sizeof(menu->title)) < 0) { logf("%%menu_start title empty"); @@ -1053,18 +1053,18 @@ static int parse_line(int n, char *buf, void *parameters) logf("menu: %s", menu->title); read_menu = true; break; - + case var_rootmenu: /* Only set root menu once. */ if (rootmenu >= 0) break; - + if (get_token_str(data, sizeof(data)) < 0) { logf("%%rootmenu empty"); return 0; } - + for (i = 0; i < menu_count; i++) { if (!strcasecmp(menus[i]->id, data)) @@ -1074,16 +1074,16 @@ static int parse_line(int n, char *buf, void *parameters) } break; } - + return 0; } - + if (menu->itemcount >= TAGMENU_MAX_ITEMS) { logf("max itemcount reached"); return 0; } - + /* Allocate */ if (menu->items[menu->itemcount] == NULL) menu->items[menu->itemcount] = tagtree_alloc0(sizeof(struct menu_entry)); @@ -1106,18 +1106,18 @@ static bool parse_menu(const char *filename) logf("max menucount reached"); return false; } - + fd = open(filename, O_RDONLY); if (fd < 0) { logf("Search instruction file not found."); return false; } - + /* Now read file for real, parsing into si */ fast_readline(fd, buf, sizeof buf, NULL, parse_line); close(fd); - + return true; } @@ -1136,7 +1136,7 @@ void tagtree_init(void) sizeof(struct tagentry), sizeof(struct entry)); if (lock_count > 0) panicf("tagtree locked after parsing"); - + /* If no root menu is set, assume it's the first single menu * we have. That shouldn't normally happen. */ if (rootmenu < 0) @@ -1151,14 +1151,14 @@ void tagtree_init(void) static bool show_search_progress(bool init, int count) { static int last_tick = 0; - + /* Don't show splashes for 1/2 second after starting search */ if (init) { last_tick = current_tick + HZ/2; return true; } - + /* Update progress every 1/10 of a second */ if (TIME_AFTER(current_tick, last_tick + HZ/10)) { @@ -1168,7 +1168,7 @@ static bool show_search_progress(bool init, int count) last_tick = current_tick; yield(); } - + return true; } @@ -1181,7 +1181,7 @@ static int format_str(struct tagcache_search *tcs, struct display_format *fmt, int parpos = 0; int buf_pos = 0; int i; - + memset(buf, 0, buf_size); for (i = 0; fmt->formatstr[i] != '\0'; i++) { @@ -1195,7 +1195,7 @@ static int format_str(struct tagcache_search *tcs, struct display_format *fmt, return -1; } } - + char formatchar = fmt->formatstr[i]; if (read_format) @@ -1260,16 +1260,16 @@ static int format_str(struct tagcache_search *tcs, struct display_format *fmt, } else buf[buf_pos++] = formatchar; - + if (buf_pos >= buf_size - 1) /* need at least one more byte for \0 */ { logf("buffer overflow"); return -4; } } - + buf[buf_pos++] = '\0'; - + return 0; } @@ -1312,19 +1312,19 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) if (!tagcache_search(&tcs, tag)) return -1; - + /* Prevent duplicate entries in the search list. */ tagcache_search_set_uniqbuf(&tcs, uniqbuf, UNIQBUF_SIZE); - + if (level || csi->clause_count[0] || TAGCACHE_IS_NUMERIC(tag)) sort = true; - + for (i = 0; i < level; i++) { if (TAGCACHE_IS_NUMERIC(csi->tagorder[i])) { static struct tagcache_search_clause cc; - + memset(&cc, 0, sizeof(struct tagcache_search_clause)); cc.tag = csi->tagorder[i]; cc.type = clause_is; @@ -1334,7 +1334,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) } else { - tagcache_search_add_filter(&tcs, csi->tagorder[i], + tagcache_search_add_filter(&tcs, csi->tagorder[i], csi->result_seek[i]); } } @@ -1345,15 +1345,15 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) for (i = 0; i <= level; i++) { int j; - + for (j = 0; j < csi->clause_count[i]; j++) tagcache_search_add_clause(&tcs, csi->clause[i][j]); } - + current_offset = offset; current_entry_count = 0; c->dirfull = false; - + fmt = NULL; for (i = 0; i < format_count; i++) { @@ -1374,7 +1374,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) sort_limit = 0; strip = 0; } - + /* lock buflib out due to possible yields */ tree_lock_cache(c); struct tagentry *dptr = core_get_data(c->cache.entries_handle); @@ -1401,12 +1401,12 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) total_count += 2; } - + while (tagcache_get_next(&tcs)) { if (total_count++ < offset) continue; - + dptr->newtable = NAVIBROWSE; if (tag == tag_title || tag == tag_filename) { @@ -1415,7 +1415,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) } else dptr->extraseek = tcs.result_seek; - + fmt = NULL; /* Check the format */ tagtree_lock(); @@ -1423,7 +1423,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) { if (formats[i]->group_id != csi->format_id[level]) continue; - + if (tagcache_check_clauses(&tcs, formats[i]->clause, formats[i]->clause_count)) { @@ -1439,11 +1439,11 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) tcs.result_len = strlen(tcs.result); tcs.ramresult = true; } - + if (!tcs.ramresult || fmt) { dptr->name = core_get_data(c->cache.name_buffer_handle)+namebufused; - + if (fmt) { int ret = format_str(&tcs, fmt, dptr->name, @@ -1482,7 +1482,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) } else dptr->name = tcs.result; - + dptr++; current_entry_count++; @@ -1493,7 +1493,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) sort = false; break ; } - + if (init && !tcs.ramsearch) { if (!show_search_progress(false, total_count)) @@ -1505,7 +1505,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) } } } - + if (sort) { struct tagentry *entries = get_entries(c); @@ -1513,7 +1513,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) current_entry_count - special_entry_count, sizeof(struct tagentry), compare); } - + if (!init) { tagcache_search_finish(&tcs); @@ -1521,7 +1521,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) tagtree_unlock(); return current_entry_count; } - + while (tagcache_get_next(&tcs)) { if (!tcs.ramsearch) @@ -1531,7 +1531,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) } total_count++; } - + tagcache_search_finish(&tcs); tree_unlock_cache(c); tagtree_unlock(); @@ -1542,42 +1542,42 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) logf("Too small dir buffer"); return 0; } - + if (sort_limit) total_count = MIN(total_count, sort_limit); - + if (strip) { dptr = get_entries(c); for (i = special_entry_count; i < current_entry_count; i++, dptr++) { int len = strlen(dptr->name); - + if (len < strip) continue; - + dptr->name = &dptr->name[strip]; } } return total_count; - + } static int load_root(struct tree_context *c) { struct tagentry *dptr = core_get_data(c->cache.entries_handle); int i; - + tc = c; c->currtable = ROOT; if (c->dirlevel == 0) c->currextra = rootmenu; - + menu = menus[c->currextra]; if (menu == NULL) return 0; - + for (i = 0; i < menu->itemcount; i++) { dptr->name = menu->items[i]->name; @@ -1587,7 +1587,7 @@ static int load_root(struct tree_context *c) dptr->newtable = NAVIBROWSE; dptr->extraseek = i; break; - + case menu_load: dptr->newtable = ROOT; dptr->extraseek = menu->items[i]->link; @@ -1596,10 +1596,10 @@ static int load_root(struct tree_context *c) dptr++; } - + current_offset = 0; current_entry_count = i; - + return i; } @@ -1607,7 +1607,7 @@ int tagtree_load(struct tree_context* c) { int count; int table = c->currtable; - + c->dirsindir = 0; if (!table) @@ -1618,7 +1618,7 @@ int tagtree_load(struct tree_context* c) c->currextra = rootmenu; } - switch (table) + switch (table) { case ROOT: count = load_root(c); @@ -1631,12 +1631,12 @@ int tagtree_load(struct tree_context* c) count = retrieve_entries(c, 0, true); cpu_boost(false); break; - + default: logf("Unsupported table %d\n", table); return -1; } - + if (count < 0) { c->dirlevel = 0; @@ -1646,7 +1646,7 @@ int tagtree_load(struct tree_context* c) /* The _total_ numer of entries available. */ c->dirlength = c->filesindir = count; - + return count; } @@ -1660,10 +1660,10 @@ int tagtree_enter(struct tree_context* c) int source; dptr = tagtree_get_entry(c, c->selected_item); - + c->dirfull = false; - seek = dptr->extraseek; - if (seek == -1) + seek = dptr->extraseek; + if (seek == -1) { if(c->filesindir<=2) return 0; @@ -1685,27 +1685,27 @@ int tagtree_enter(struct tree_context* c) /* lock buflib for possible I/O to protect dptr */ tree_lock_cache(c); tagtree_lock(); - + switch (c->currtable) { case ROOT: c->currextra = newextra; - + if (newextra == ROOT) { menu = menus[seek]; c->currextra = seek; } - + else if (newextra == NAVIBROWSE) { int i, j; - + csi = &menu->items[seek]->si; c->currextra = 0; - - strlcpy(current_title[c->currextra], dptr->name, + + strlcpy(current_title[c->currextra], dptr->name, sizeof(current_title[0])); - + /* Read input as necessary. */ for (i = 0; i < csi->tagorder_count; i++) { @@ -1717,13 +1717,13 @@ int tagtree_enter(struct tree_context* c) continue; source = csi->clause[i][j]->source; - + if (source == source_constant) continue; searchstring=csi->clause[i][j]->str; - *searchstring = '\0'; - + *searchstring = '\0'; + id3 = audio_current_track(); if (source == source_current_path && id3) @@ -1736,7 +1736,7 @@ int tagtree_enter(struct tree_context* c) } else if (source > source_runtime && id3) { - + int k = source-source_runtime; int offset = id3_to_search_mapping[k].id3_offset; char **src = (char**)((char*)id3 + offset); @@ -1757,9 +1757,9 @@ int tagtree_enter(struct tree_context* c) } if (csi->clause[i][j]->numeric) csi->clause[i][j]->numeric_data = atoi(searchstring); - } - - + } + + } } } @@ -1791,18 +1791,18 @@ int tagtree_enter(struct tree_context* c) c->currextra++; else c->dirlevel--; - + /* Update the statusbar title */ - strlcpy(current_title[c->currextra], dptr->name, + strlcpy(current_title[c->currextra], dptr->name, sizeof(current_title[0])); break; - + default: c->dirlevel--; break; } - + c->selected_item=0; gui_synclist_select_item(&tree_lists, c->selected_item); tree_unlock_cache(c); @@ -1827,7 +1827,7 @@ int tagtree_get_filename(struct tree_context* c, char *buf, int buflen) { struct tagcache_search tcs; int extraseek = tagtree_get_entry(c, c->selected_item)->extraseek; - + if (!tagcache_search(&tcs, tag_filename)) return -1; @@ -1839,7 +1839,7 @@ int tagtree_get_filename(struct tree_context* c, char *buf, int buflen) } tagcache_search_finish(&tcs); - + return 0; } @@ -1858,7 +1858,7 @@ static bool insert_all_playlist(struct tree_context *c, int position, bool queue cpu_boost(false); return false; } - + if (position == PLAYLIST_REPLACE) { if (playlist_remove_all_tracks(NULL) == 0) @@ -1882,14 +1882,14 @@ static bool insert_all_playlist(struct tree_context *c, int position, bool queue to = c->filesindir; direction = 1; } - + for (i = from; i != to; i += direction) { /* Count back to zero */ if (!show_search_progress(false, files_left--)) break; - - if (!tagcache_retrieve(&tcs, tagtree_get_entry(c, i)->extraseek, + + if (!tagcache_retrieve(&tcs, tagtree_get_entry(c, i)->extraseek, tcs.type, buf, sizeof buf)) { continue; @@ -1905,7 +1905,7 @@ static bool insert_all_playlist(struct tree_context *c, int position, bool queue playlist_sync(NULL); tagcache_search_finish(&tcs); cpu_boost(false); - + return true; } @@ -1923,10 +1923,10 @@ bool tagtree_insert_selection_playlist(int position, bool queue) #endif , 0); - + /* We need to set the table to allsubentries. */ newtable = tagtree_get_entry(tc, tc->selected_item)->newtable; - + /* Insert a single track? */ if (newtable == PLAYTRACK) { @@ -1936,10 +1936,10 @@ bool tagtree_insert_selection_playlist(int position, bool queue) return false; } playlist_insert_track(NULL, buf, position, queue, true); - + return true; } - + if (newtable == NAVIBROWSE) { tagtree_enter(tc); @@ -1951,14 +1951,14 @@ bool tagtree_insert_selection_playlist(int position, bool queue) logf("unsupported table: %d", newtable); return false; } - + /* Now the current table should be allsubentries. */ if (newtable != PLAYTRACK) { tagtree_enter(tc); tagtree_load(tc); newtable = tagtree_get_entry(tc, tc->selected_item)->newtable; - + /* And now the newtable should be playtrack. */ if (newtable != PLAYTRACK) { @@ -1976,12 +1976,12 @@ bool tagtree_insert_selection_playlist(int position, bool queue) if (!insert_all_playlist(tc, position, queue)) splash(HZ*2, ID2P(LANG_FAILED)); } - + /* Finally return the dirlevel to its original value. */ while (tc->dirlevel > dirlevel) tagtree_exit(tc); tagtree_load(tc); - + return true; } @@ -1995,7 +1995,7 @@ static int tagtree_play_folder(struct tree_context* c) if (!insert_all_playlist(c, PLAYLIST_INSERT_LAST, false)) return -2; - + if (global_settings.playlist_shuffle) c->selected_item = playlist_shuffle(current_tick, c->selected_item); if (!global_settings.play_selected) @@ -2011,7 +2011,7 @@ static struct tagentry* tagtree_get_entry(struct tree_context *c, int id) { struct tagentry *entry; int realid = id - current_offset; - + /* Load the next chunk if necessary. */ if (realid >= current_entry_count || realid < 0) { @@ -2048,12 +2048,12 @@ char *tagtree_get_title(struct tree_context* c) { case ROOT: return menu->title; - + case NAVIBROWSE: case ALLSUBENTRIES: return current_title[c->currextra]; } - + return "?"; } @@ -2072,7 +2072,7 @@ int tagtree_get_attr(struct tree_context* c) case ALLSUBENTRIES: attr = FILE_ATTR_AUDIO; break; - + default: attr = ATTR_DIRECTORY; break;