Index: rockbox-devel/apps/bookmark.c =================================================================== --- rockbox-devel.orig/apps/bookmark.c +++ rockbox-devel/apps/bookmark.c @@ -83,7 +83,7 @@ static bool parse_bookmark(const char * char* file_name); static char* select_bookmark(const char* bookmark_file_name, bool is_mrb); static bool system_check(void); -static bool write_bookmark(bool create_bookmark_file); +static bool write_bookmark(bool create_bookmark_file, char *bookmark); static int get_bookmark_count(const char* bookmark_file_name); static char global_temp_buffer[MAX_PATH+1]; @@ -97,7 +97,7 @@ static char global_filename[MAX_PATH]; /* ----------------------------------------------------------------------- */ bool bookmark_create_menu(void) { - write_bookmark(true); + write_bookmark(true, create_bookmark()); return false; } @@ -195,20 +195,23 @@ bool bookmark_mrb_load() /* ----------------------------------------------------------------------- */ bool bookmark_autobookmark(void) { + char* bookmark; if (!system_check()) return false; audio_pause(); /* first pause playback */ + bookmark = create_bookmark(); + audio_stop(); switch (global_settings.autocreatebookmark) { case BOOKMARK_YES: - return write_bookmark(true); + return write_bookmark(true, bookmark); case BOOKMARK_NO: return false; case BOOKMARK_RECENT_ONLY_YES: - return write_bookmark(false); + return write_bookmark(false, bookmark); } #ifdef HAVE_LCD_BITMAP unsigned char *lines[]={ID2P(LANG_AUTO_BOOKMARK_QUERY)}; @@ -225,9 +228,9 @@ bool bookmark_autobookmark(void) if(gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES) { if (global_settings.autocreatebookmark == BOOKMARK_RECENT_ONLY_ASK) - return write_bookmark(false); + return write_bookmark(false, bookmark); else - return write_bookmark(true); + return write_bookmark(true, bookmark); } return false; } @@ -239,15 +242,13 @@ bool bookmark_autobookmark(void) /* resume_index*resume_offset*resume_seed*resume_first_index* */ /* resume_file*milliseconds*MP3 Title* */ /* ------------------------------------------------------------------------*/ -static bool write_bookmark(bool create_bookmark_file) +static bool write_bookmark(bool create_bookmark_file, char *bookmark) { bool success=false; - char* bookmark; if (!system_check()) return false; /* something didn't happen correctly, do nothing */ - bookmark = create_bookmark(); if (!bookmark) return false; /* something didn't happen correctly, do nothing */