Compare commits

...
Sign in to create a new pull request.

20 commits

Author SHA1 Message Date
Jonathan Gordon
f9dce96b6a (hopefully) Fix FS#12639 and other skin related buflib corruption issues.
Kudos to funman for figuring out the problem - skin_find_item() rather
stupidly uses the global skin_buffer variable in skin_parser.c which is
fine in the parser EXCEPT it gets changed in skin_render when the sbs
is being redrawn while another skin is loading, so fix this by makeing
skin_find_item() use a local data pointer so a skin_render() during
parsing won't break anything.

Change-Id: I80e1c0efe569c18225e5772159c18ebb21e07332

Conflicts:

	apps/gui/skin_engine/skin_parser.c
2012-05-16 22:49:09 +10:00
Frank Gevaerts
8b9e5c906f Bump version numbers to 3.11.2
Change-Id: Ib4a04b65bb8446c24340f4c993ec5badda87d26f
2012-04-11 23:42:05 +02:00
Bertrik Sikken
5e89217777 si4700 tuner: fix power consumption issue caused by ill-defined power state at startup
Change-Id: I657bc7e3d330f436859cfef2a89b0813bc008c49
2012-04-11 23:36:47 +02:00
Frank Gevaerts
a88707fa35 Increase mr100 remote lcd thread stack (fixes FS#12640)
Change-Id: I95a2a343762b8592f80bec0f11ddcdcb7983ae12
2012-04-11 23:07:57 +02:00
Frank Gevaerts
7230de114d Bump version numbers for 3.11.1
Change-Id: I98c904b1d5e5c80c21d8a08b5413cd1e7f70bff2
2012-04-07 20:29:59 +02:00
Frank Gevaerts
107cfc2f47 Call tuner_power(true) from the correct place for lv24020lp.
This fixes radio not working on c200 and e200 (and possibly others),
as reported in FS#12631.

Change-Id: Idd66fa3b74916cc6f2de45ae7dd89b3bfd70f070
2012-04-02 22:14:48 +02:00
Frank Gevaerts
368e358761 We won't release on April 1st after all, so change the release date.
Change-Id: Idcdd64205a91c1668ce1c72690d6799aee0b96ef
2012-03-31 14:33:45 +02:00
Frank Gevaerts
02ef2d83e6 Bump version to 3.11 in preparation of the release
Change-Id: Ia764e8b762d7a6ce800d44c6c3372580d5a3ae6e
2012-03-31 14:30:00 +02:00
Frank Gevaerts
50c624cf48 Drop the nano2g back to unstable for now
Change-Id: Id6d346d0bdc3c09e5c112ab57ee3c71c18a643a8
2012-03-31 14:25:15 +02:00
Rafaël Carré
6622b22f45 Nano2g/Classic: disable buggy USB driver
Change-Id: I5bf08d90a20e158d3d29e2efae4fcbbae1a9af83
2012-03-30 19:02:35 -04:00
Rafaël Carré
1cc3055644 usb-nano2g-6g: missing brace in non-default preprocessor path
Change-Id: Iacf6719e58b927bb619d469048e16797cae5cecd
(cherry picked from commit 41b46231cb)

Signed-off-by: Rafaël Carré <funman@videolan.org>
2012-03-30 18:59:16 -04:00
Thomas Martitz
6284e0fe0d panicf(): fix wrong font and colors being displayed.
Change-Id: I57680d5857b577d731b5703e209ccc6e9511ef17
2012-03-30 11:25:18 +02:00
Michael Giacomelli
c7b8ebd074 Mark the Sansa c200v2 series of players as stable
These were originally held back as unstable due to bugs in rockbox's
audio buffering that only occuried on very low memory targets.  The
c200v2 is the lowest memory target we have.  Various improvements
to our buffering system seem to have fully corrected these problems.

Change-Id: I4404fe9b85c037904aea4b720e5a1fcb266f3d18
2012-03-29 00:10:09 +02:00
Dominik Riebeling
4ec74ee0fb Add a new tarball generation script. The old one depended on svn
Change-Id: I873ca9eec30f98c1355d87cd2de89456d08d016a
2012-03-28 21:21:42 +02:00
Marek Salaba
cbe1b5cf1c FS#12627 - March update of Czech language
Change-Id: I855f0f3d3a9a126beee03aa8071ff8a9a5fa16ed
2012-03-28 17:09:54 +02:00
Jonathan Gordon
bda7ba1ad8 skin_engine: fix scrolling lines with dynamic content
Change-Id: If85220c8b59123814e0e6b1a3b8e00c981271021
2012-03-26 22:33:14 +11:00
Frank Gevaerts
ab07950c8d Disable loading dircache from disk to avoid FS#12590.
A proper fix would of course be better, but this at least avoids the
crash.

Change-Id: Idae499c7efc8bb683912716e25620f163c1687d4
2012-03-21 21:34:44 +01:00
Frank Gevaerts
71039a928f Bump release build versions to 3.11RC
Change-Id: I9a1b7a85dad9c102a276c963cc187ebfe01c0695
2012-03-21 21:28:46 +01:00
Szymon Dziok
84c6dda012 Correct polish translation.
Author: Przemyslaw Holubowski
Flyspray: FS #12531

Change-Id: I6671e2ee0fcc68dd2c18aad238de29c86ae6bf6a
2012-03-17 23:42:56 +01:00
Jonathan Gordon
9837bc3e51 skin_engine: Reenable skin debugging in the sim (use --debugwps)
Change-Id: I2881edda45cd3ea69f5284d93bc93c47bb63b3f2
2012-03-15 23:31:34 +11:00
21 changed files with 183 additions and 833 deletions

View file

@ -33,6 +33,7 @@
#include "viewport.h"
#include "skin_buffer.h"
#include "skin_debug.h"
#include "skin_parser.h"
#include "tag_table.h"
@ -79,11 +80,6 @@
#define WPS_ERROR_INVALID_PARAM -1
static char* skin_buffer = NULL;
void skinparser_set_buffer(char* pointer)
{
skin_buffer = pointer;
}
#if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1))
static char *backdrop_filename;
#endif
@ -157,7 +153,6 @@ void *skin_find_item(const char *label, enum skin_find_what what,
struct wps_data *data)
{
const char *itemlabel = NULL;
char *old_skin_buffer = skin_buffer;
char *databuf = get_skin_buffer(data);
union {
struct skin_token_list *linkedlist;
@ -165,28 +160,28 @@ void *skin_find_item(const char *label, enum skin_find_what what,
} list = {NULL};
bool isvplist = false;
void *ret = NULL;
if (databuf && databuf != skin_buffer)
skin_buffer = get_skin_buffer(data);
if (!databuf)
databuf = skin_buffer;
switch (what)
{
case SKIN_FIND_UIVP:
case SKIN_FIND_VP:
list.vplist = SKINOFFSETTOPTR(skin_buffer, data->tree);
list.vplist = SKINOFFSETTOPTR(databuf, data->tree);
isvplist = true;
break;
#ifdef HAVE_LCD_BITMAP
case SKIN_FIND_IMAGE:
list.linkedlist = SKINOFFSETTOPTR(skin_buffer, data->images);
list.linkedlist = SKINOFFSETTOPTR(databuf, data->images);
break;
#endif
#ifdef HAVE_TOUCHSCREEN
case SKIN_FIND_TOUCHREGION:
list.linkedlist = SKINOFFSETTOPTR(skin_buffer, data->touchregions);
list.linkedlist = SKINOFFSETTOPTR(databuf, data->touchregions);
break;
#endif
#ifdef HAVE_SKIN_VARIABLES
case SKIN_VARIABLE:
list.linkedlist = SKINOFFSETTOPTR(skin_buffer, data->skinvars);
list.linkedlist = SKINOFFSETTOPTR(databuf, data->skinvars);
break;
#endif
}
@ -197,54 +192,50 @@ void *skin_find_item(const char *label, enum skin_find_what what,
#ifdef HAVE_LCD_BITMAP
struct wps_token *token = NULL;
if (!isvplist)
token = SKINOFFSETTOPTR(skin_buffer, list.linkedlist->token);
token = SKINOFFSETTOPTR(databuf, list.linkedlist->token);
#endif
switch (what)
{
case SKIN_FIND_UIVP:
case SKIN_FIND_VP:
ret = SKINOFFSETTOPTR(skin_buffer, list.vplist->data);
ret = SKINOFFSETTOPTR(databuf, list.vplist->data);
if (((struct skin_viewport *)ret)->label == VP_DEFAULT_LABEL)
itemlabel = VP_DEFAULT_LABEL_STRING;
else
itemlabel = SKINOFFSETTOPTR(skin_buffer, ((struct skin_viewport *)ret)->label);
itemlabel = SKINOFFSETTOPTR(databuf, ((struct skin_viewport *)ret)->label);
skip = !(((struct skin_viewport *)ret)->is_infovp ==
(what==SKIN_FIND_UIVP));
break;
#ifdef HAVE_LCD_BITMAP
case SKIN_FIND_IMAGE:
ret = SKINOFFSETTOPTR(skin_buffer, token->value.data);
itemlabel = SKINOFFSETTOPTR(skin_buffer, ((struct gui_img *)ret)->label);
ret = SKINOFFSETTOPTR(databuf, token->value.data);
itemlabel = SKINOFFSETTOPTR(databuf, ((struct gui_img *)ret)->label);
break;
#endif
#ifdef HAVE_TOUCHSCREEN
case SKIN_FIND_TOUCHREGION:
ret = SKINOFFSETTOPTR(skin_buffer, token->value.data);
itemlabel = SKINOFFSETTOPTR(skin_buffer, ((struct touchregion *)ret)->label);
ret = SKINOFFSETTOPTR(databuf, token->value.data);
itemlabel = SKINOFFSETTOPTR(databuf, ((struct touchregion *)ret)->label);
break;
#endif
#ifdef HAVE_SKIN_VARIABLES
case SKIN_VARIABLE:
ret = SKINOFFSETTOPTR(skin_buffer, token->value.data);
itemlabel = SKINOFFSETTOPTR(skin_buffer, ((struct skin_var *)ret)->label);
ret = SKINOFFSETTOPTR(databuf, token->value.data);
itemlabel = SKINOFFSETTOPTR(databuf, ((struct skin_var *)ret)->label);
break;
#endif
}
if (!skip && itemlabel && !strcmp(itemlabel, label))
{
if (old_skin_buffer != skin_buffer)
skin_buffer = old_skin_buffer;
return ret;
}
if (isvplist)
list.vplist = SKINOFFSETTOPTR(skin_buffer, list.vplist->next);
list.vplist = SKINOFFSETTOPTR(databuf, list.vplist->next);
else
list.linkedlist = SKINOFFSETTOPTR(skin_buffer, list.linkedlist->next);
list.linkedlist = SKINOFFSETTOPTR(databuf, list.linkedlist->next);
}
if (old_skin_buffer != skin_buffer)
skin_buffer = old_skin_buffer;
return NULL;
}
@ -2242,6 +2233,10 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
struct skin_element *tree = skin_parse(wps_buffer, skin_element_callback, wps_data);
wps_data->tree = PTRTOSKINOFFSET(skin_buffer, tree);
if (!SKINOFFSETTOPTR(skin_buffer, wps_data->tree)) {
#ifdef DEBUG_SKIN_ENGINE
if (isfile && debug_wps)
skin_error_format_message();
#endif
skin_data_reset(wps_data);
return false;
}
@ -2296,9 +2291,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
#else
wps_data->wps_loaded = wps_data->tree >= 0;
#endif
#ifdef DEBUG_SKIN_ENGINE
// if (isfile && debug_wps)
// debug_skin_usage();
#endif
skin_buffer = NULL;
return true;
}

View file

@ -83,8 +83,6 @@ static void skin_render_playlistviewer(struct playlistviewer* viewer,
#endif
static char* skin_buffer;
/* hack alert: fix skin_parser.c's skin_buffer pointer */
void skinparser_set_buffer(char* pointer);
static inline struct skin_element*
get_child(OFFSETTYPE(struct skin_element**) children, int child)
@ -694,7 +692,6 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps,
struct align_pos * align = &info.align;
bool needs_update;
skin_buffer = get_skin_buffer(gwps->data);
skinparser_set_buffer(skin_buffer);
#ifdef HAVE_LCD_BITMAP
/* Set images to not to be displayed */
struct skin_token_list *imglist = SKINOFFSETTOPTR(skin_buffer, gwps->data->images);
@ -754,7 +751,7 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps,
/* only update if the line needs to be, and there is something to write */
if (refresh_type && needs_update)
{
if (!info.force_redraw)
if (info.force_redraw)
display->scroll_stop_line(&skin_viewport->vp, info.line_number);
write_line(display, align, info.line_number,
info.line_scrolls, info.text_style);
@ -779,7 +776,6 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode)
int old_refresh_mode = refresh_mode;
skin_buffer = get_skin_buffer(gwps->data);
skinparser_set_buffer(skin_buffer);
#ifdef HAVE_LCD_CHARCELLS
int i;

View file

@ -1,661 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 Nicolas Pennequin, Dan Everton, Matthias Mohr
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "wps.h"
#include "wps_internals.h"
#ifdef DEBUG_SKIN_ENGINE
#include <stdio.h>
#include <string.h>
#include "settings_list.h"
#ifdef __PCTOOL__
#ifdef WPSEDITOR
#include "proxy.h"
#else
#define DEBUGF printf
#endif
#else
#include "debug.h"
#endif
#if defined(SIMULATOR) || defined(__PCTOOL__)
extern int wps_verbose_level;
#endif
struct debug_token_table
{
enum wps_token_type start_marker;
char *desc;
};
#define X(name) name, #name
struct debug_token_table tokens[] = {
{ X(TOKEN_MARKER_CONTROL_TOKENS) },
{ X(TOKEN_MARKER_BATTERY) },
{ X(TOKEN_MARKER_SOUND) },
{ X(TOKEN_MARKER_RTC) },
{ X(TOKEN_MARKER_DATABASE) },
{ X(TOKEN_MARKER_FILE) },
{ X(TOKEN_MARKER_IMAGES) },
{ X(TOKEN_MARKER_METADATA) },
{ X(TOKEN_MARKER_PLAYBACK_INFO) },
{ X(TOKEN_MARKER_PLAYLIST) },
{ X(TOKEN_MARKER_MISC) },
{ X(TOKEN_MARKER_RECORDING) },
{ X(TOKEN_MARKER_TUNER) },
{ X(TOKEN_MARKER_END) },
};
#undef X
static char *next_str(bool next) {
return next ? "next " : "";
}
static char *get_token_desc(struct wps_token *token, char *buf,
int bufsize, struct wps_data *data)
{
unsigned i;
#ifndef HAVE_LCD_BITMAP
(void)data; /* kill charcell warning */
#endif
bool next = token->next;
switch(token->type)
{
case WPS_NO_TOKEN:
snprintf(buf, bufsize, "No token");
break;
case WPS_TOKEN_UNKNOWN:
snprintf(buf, bufsize, "Unknown token");
break;
case WPS_TOKEN_CHARACTER:
if (token->value.c == '\n')
snprintf(buf, bufsize, "Character '\\n'");
else
snprintf(buf, bufsize, "Character '%c'",
token->value.c);
break;
case WPS_TOKEN_STRING:
snprintf(buf, bufsize, "String '%s'",
(char*)token->value.data);
break;
case WPS_TOKEN_TRANSLATEDSTRING:
snprintf(buf, bufsize, "String ID '%d'", token->value.i);
break;
#ifdef HAVE_LCD_BITMAP
case WPS_TOKEN_ALIGN_LEFT:
snprintf(buf, bufsize, "align left");
break;
case WPS_TOKEN_ALIGN_CENTER:
snprintf(buf, bufsize, "align center");
break;
case WPS_TOKEN_ALIGN_RIGHT:
snprintf(buf, bufsize, "align right");
break;
#endif
case WPS_TOKEN_SUBLINE_TIMEOUT:
snprintf(buf, bufsize, "subline timeout value: %d",
token->value.i);
break;
case WPS_TOKEN_CONDITIONAL:
snprintf(buf, bufsize, "conditional, %d options",
token->value.i);
break;
case WPS_TOKEN_CONDITIONAL_START:
snprintf(buf, bufsize, "conditional start, next cond: %d",
token->value.i);
break;
case WPS_TOKEN_CONDITIONAL_OPTION:
snprintf(buf, bufsize, "conditional option, next cond: %d",
token->value.i);
break;
case WPS_TOKEN_CONDITIONAL_END:
snprintf(buf, bufsize, "conditional end");
break;
#ifdef HAVE_LCD_BITMAP
case WPS_TOKEN_LIST_TITLE_TEXT:
snprintf(buf, bufsize, "list title text");
break;
case WPS_TOKEN_LIST_TITLE_ICON:
snprintf(buf, bufsize, "list title icon");
break;
case WPS_TOKEN_IMAGE_PRELOAD:
snprintf(buf, bufsize, "preload image");
break;
case WPS_TOKEN_IMAGE_PRELOAD_DISPLAY:
{
char subimage = '\0';
char label = token->value.i&0xFF;
struct gui_img *img = skin_find_item(label, SKIN_FIND_IMAGE, data);
if (img && img->num_subimages > 1)
{
int item = token->value.i>>8;
if (item >= 26)
subimage = 'A' + item-26;
else
subimage = 'a' + item;
}
snprintf(buf, bufsize, "display preloaded image '%c%c'",
label, subimage);
}
break;
case WPS_TOKEN_IMAGE_DISPLAY:
snprintf(buf, bufsize, "display image");
break;
#endif
#ifdef HAS_BUTTON_HOLD
case WPS_TOKEN_MAIN_HOLD:
snprintf(buf, bufsize, "mode hold");
break;
#endif
#ifdef HAS_REMOTE_BUTTON_HOLD
case WPS_TOKEN_REMOTE_HOLD:
snprintf(buf, bufsize, "mode remote hold");
break;
#endif
case WPS_TOKEN_REPEAT_MODE:
snprintf(buf, bufsize, "mode repeat");
break;
case WPS_TOKEN_PLAYBACK_STATUS:
snprintf(buf, bufsize, "mode playback");
break;
case WPS_TOKEN_RTC_PRESENT:
snprintf(buf, bufsize, "rtc: present?");
break;
case WPS_TOKEN_RTC_DAY_OF_MONTH:
snprintf(buf, bufsize, "rtc: day of month (01..31)");
break;
case WPS_TOKEN_RTC_DAY_OF_MONTH_BLANK_PADDED:
snprintf(buf, bufsize,
"rtc: day of month, blank padded ( 1..31)");
break;
case WPS_TOKEN_RTC_HOUR_24_ZERO_PADDED:
snprintf(buf, bufsize, "rtc: hour (00..23)");
break;
case WPS_TOKEN_RTC_HOUR_24:
snprintf(buf, bufsize, "rtc: hour ( 0..23)");
break;
case WPS_TOKEN_RTC_HOUR_12_ZERO_PADDED:
snprintf(buf, bufsize, "rtc: hour (01..12)");
break;
case WPS_TOKEN_RTC_HOUR_12:
snprintf(buf, bufsize, "rtc: hour ( 1..12)");
break;
case WPS_TOKEN_RTC_MONTH:
snprintf(buf, bufsize, "rtc: month (01..12)");
break;
case WPS_TOKEN_RTC_MINUTE:
snprintf(buf, bufsize, "rtc: minute (00..59)");
break;
case WPS_TOKEN_RTC_SECOND:
snprintf(buf, bufsize, "rtc: second (00..59)");
break;
case WPS_TOKEN_RTC_YEAR_2_DIGITS:
snprintf(buf, bufsize,
"rtc: last two digits of year (00..99)");
break;
case WPS_TOKEN_RTC_YEAR_4_DIGITS:
snprintf(buf, bufsize, "rtc: year (1970...)");
break;
case WPS_TOKEN_RTC_AM_PM_UPPER:
snprintf(buf, bufsize,
"rtc: upper case AM or PM indicator");
break;
case WPS_TOKEN_RTC_AM_PM_LOWER:
snprintf(buf, bufsize,
"rtc: lower case am or pm indicator");
break;
case WPS_TOKEN_RTC_WEEKDAY_NAME:
snprintf(buf, bufsize,
"rtc: abbreviated weekday name (Sun..Sat)");
break;
case WPS_TOKEN_RTC_MONTH_NAME:
snprintf(buf, bufsize,
"rtc: abbreviated month name (Jan..Dec)");
break;
case WPS_TOKEN_RTC_DAY_OF_WEEK_START_MON:
snprintf(buf, bufsize,
"rtc: day of week (1..7); 1 is Monday");
break;
case WPS_TOKEN_RTC_DAY_OF_WEEK_START_SUN:
snprintf(buf, bufsize,
"rtc: day of week (0..6); 0 is Sunday");
break;
#if (CONFIG_CODEC == SWCODEC)
case WPS_TOKEN_CROSSFADE:
snprintf(buf, bufsize, "crossfade");
break;
case WPS_TOKEN_REPLAYGAIN:
snprintf(buf, bufsize, "replaygain");
break;
#endif
#ifdef HAVE_ALBUMART
case WPS_TOKEN_ALBUMART_DISPLAY:
snprintf(buf, bufsize, "album art display");
break;
case WPS_TOKEN_ALBUMART_FOUND:
snprintf(buf, bufsize, "%strack album art conditional",
next_str(next));
break;
#endif
#ifdef HAVE_LCD_BITMAP
case WPS_TOKEN_IMAGE_BACKDROP:
snprintf(buf, bufsize, "backdrop image");
break;
case WPS_TOKEN_IMAGE_PROGRESS_BAR:
snprintf(buf, bufsize, "progressbar bitmap");
break;
case WPS_TOKEN_PEAKMETER:
snprintf(buf, bufsize, "peakmeter");
break;
#endif
case WPS_TOKEN_PROGRESSBAR:
snprintf(buf, bufsize, "progressbar");
break;
#ifdef HAVE_LCD_CHARCELLS
case WPS_TOKEN_PLAYER_PROGRESSBAR:
snprintf(buf, bufsize, "full line progressbar");
break;
#endif
case WPS_TOKEN_TRACK_TIME_ELAPSED:
snprintf(buf, bufsize, "time elapsed in track");
break;
case WPS_TOKEN_TRACK_ELAPSED_PERCENT:
snprintf(buf, bufsize, "played percentage of track");
break;
case WPS_TOKEN_PLAYLIST_ENTRIES:
snprintf(buf, bufsize, "number of entries in playlist");
break;
case WPS_TOKEN_PLAYLIST_NAME:
snprintf(buf, bufsize, "playlist name");
break;
case WPS_TOKEN_PLAYLIST_POSITION:
snprintf(buf, bufsize, "position in playlist");
break;
case WPS_TOKEN_TRACK_TIME_REMAINING:
snprintf(buf, bufsize, "time remaining in track");
break;
case WPS_TOKEN_PLAYLIST_SHUFFLE:
snprintf(buf, bufsize, "playlist shuffle mode");
break;
case WPS_TOKEN_TRACK_LENGTH:
snprintf(buf, bufsize, "track length");
break;
case WPS_TOKEN_VOLUME:
snprintf(buf, bufsize, "volume");
break;
case WPS_TOKEN_METADATA_ARTIST:
snprintf(buf, bufsize, "%strack artist",
next_str(next));
break;
case WPS_TOKEN_METADATA_COMPOSER:
snprintf(buf, bufsize, "%strack composer",
next_str(next));
break;
case WPS_TOKEN_METADATA_ALBUM:
snprintf(buf, bufsize, "%strack album",
next_str(next));
break;
case WPS_TOKEN_METADATA_GROUPING:
snprintf(buf, bufsize, "%strack grouping",
next_str(next));
break;
case WPS_TOKEN_METADATA_GENRE:
snprintf(buf, bufsize, "%strack genre",
next_str(next));
break;
case WPS_TOKEN_METADATA_DISC_NUMBER:
snprintf(buf, bufsize, "%strack disc", next_str(next));
break;
case WPS_TOKEN_METADATA_TRACK_NUMBER:
snprintf(buf, bufsize, "%strack number",
next_str(next));
break;
case WPS_TOKEN_METADATA_TRACK_TITLE:
snprintf(buf, bufsize, "%strack title",
next_str(next));
break;
case WPS_TOKEN_METADATA_VERSION:
snprintf(buf, bufsize, "%strack ID3 version",
next_str(next));
break;
case WPS_TOKEN_METADATA_ALBUM_ARTIST:
snprintf(buf, bufsize, "%strack album artist",
next_str(next));
break;
case WPS_TOKEN_METADATA_COMMENT:
snprintf(buf, bufsize, "%strack comment",
next_str(next));
break;
case WPS_TOKEN_METADATA_YEAR:
snprintf(buf, bufsize, "%strack year", next_str(next));
break;
#ifdef HAVE_TAGCACHE
case WPS_TOKEN_DATABASE_PLAYCOUNT:
snprintf(buf, bufsize, "track playcount (database)");
break;
case WPS_TOKEN_DATABASE_RATING:
snprintf(buf, bufsize, "track rating (database)");
break;
case WPS_TOKEN_DATABASE_AUTOSCORE:
snprintf(buf, bufsize, "track autoscore (database)");
break;
#endif
case WPS_TOKEN_BATTERY_PERCENT:
snprintf(buf, bufsize, "battery percentage");
break;
case WPS_TOKEN_BATTERY_VOLTS:
snprintf(buf, bufsize, "battery voltage");
break;
case WPS_TOKEN_BATTERY_TIME:
snprintf(buf, bufsize, "battery time left");
break;
case WPS_TOKEN_BATTERY_CHARGER_CONNECTED:
snprintf(buf, bufsize, "battery charger connected");
break;
case WPS_TOKEN_BATTERY_CHARGING:
snprintf(buf, bufsize, "battery charging");
break;
case WPS_TOKEN_BATTERY_SLEEPTIME:
snprintf(buf, bufsize, "sleep timer");
break;
case WPS_TOKEN_FILE_BITRATE:
snprintf(buf, bufsize, "%sfile bitrate", next_str(next));
break;
case WPS_TOKEN_FILE_CODEC:
snprintf(buf, bufsize, "%sfile codec", next_str(next));
break;
case WPS_TOKEN_FILE_FREQUENCY:
snprintf(buf, bufsize, "%sfile audio frequency in Hz",
next_str(next));
break;
case WPS_TOKEN_FILE_FREQUENCY_KHZ:
snprintf(buf, bufsize, "%sfile audio frequency in KHz",
next_str(next));
break;
case WPS_TOKEN_FILE_NAME:
snprintf(buf, bufsize, "%sfile name", next_str(next));
break;
case WPS_TOKEN_FILE_NAME_WITH_EXTENSION:
snprintf(buf, bufsize, "%sfile name with extension",
next_str(next));
break;
case WPS_TOKEN_FILE_PATH:
snprintf(buf, bufsize, "%sfile path", next_str(next));
break;
case WPS_TOKEN_FILE_SIZE:
snprintf(buf, bufsize, "%sfile size", next_str(next));
break;
case WPS_TOKEN_FILE_VBR:
snprintf(buf, bufsize, "%sfile is vbr", next_str(next));
break;
case WPS_TOKEN_FILE_DIRECTORY:
snprintf(buf, bufsize, "%sfile directory, level: %d",
next_str(next), token->value.i);
break;
#if (CONFIG_CODEC != MAS3507D)
case WPS_TOKEN_SOUND_PITCH:
snprintf(buf, bufsize, "pitch value");
break;
#endif
#if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD)
case WPS_TOKEN_VLED_HDD:
snprintf(buf, bufsize, "display virtual HDD LED");
break;
#endif
case WPS_VIEWPORT_ENABLE:
case WPS_TOKEN_UIVIEWPORT_ENABLE:
snprintf(buf, bufsize, "enable %sVP: %c",
token->type == WPS_TOKEN_UIVIEWPORT_ENABLE ? "UI " : "",
(char)token->value.i);
break;
case WPS_TOKEN_BUTTON_VOLUME:
snprintf(buf, bufsize, "Volume button timeout: %d",
token->value.i);
break;
case WPS_TOKEN_SETTING:
snprintf(buf, bufsize, "Setting value: '%s'",
settings[token->value.i].cfg_name);
break;
case WPS_TOKEN_LANG_IS_RTL:
snprintf(buf, bufsize, "lang: is_rtl?");
break;
case WPS_TOKEN_TRACK_STARTING:
snprintf(buf, bufsize, "first %d seconds of track", token->value.i);
break;
case WPS_TOKEN_TRACK_ENDING:
snprintf(buf, bufsize, "last %d seconds of track", token->value.i);
break;
default:
for(i=1; i<sizeof(tokens)/sizeof(*token); i++)
{
if (token->type < tokens[i].start_marker)
{
snprintf(buf, bufsize, "FIXME: %s + %d\n", tokens[i-1].desc,
token->type - tokens[i-1].start_marker);
break;
}
}
break;
}
return buf;
}
#if defined(SIMULATOR) || defined(__PCTOOL__)
static void dump_skin(struct wps_data *data)
{
int indent = 0;
char buf[64];
int i, j;
struct skin_token_list *viewport_list;
for (viewport_list = data->viewports;
viewport_list; viewport_list = viewport_list->next)
{
struct skin_viewport *skin_viewport =
(struct skin_viewport *)viewport_list->token->value.data;
indent = 0;
DEBUGF("Viewport: '%c'\n", skin_viewport->label);
struct skin_line *line;
for (line = skin_viewport->lines; line; line = line->next)
{
struct skin_subline *subline;
indent = 1;
for(subline = &line->sublines; subline; subline = subline->next)
{
DEBUGF(" Subline: tokens %d => %d",
subline->first_token_idx,subline->last_token_idx);
if (subline->line_type & WPS_REFRESH_SCROLL)
DEBUGF(", scrolled");
else if (subline->line_type & WPS_REFRESH_PLAYER_PROGRESS)
DEBUGF(", progressbar");
else if (subline->line_type & WPS_REFRESH_PEAK_METER)
DEBUGF(", peakmeter");
DEBUGF("\n");
for (i = subline->first_token_idx; i <= subline->last_token_idx; i++)
{
struct wps_token *token = &data->tokens[i];
get_token_desc(token, buf, sizeof(buf), data);
switch(token->type)
{
case WPS_TOKEN_CONDITIONAL_START:
indent++;
break;
case WPS_TOKEN_CONDITIONAL_END:
indent--;
break;
default:
break;
}
if (wps_verbose_level > 2)
{
for(j = 0; j < indent; j++) {
DEBUGF("\t");
}
DEBUGF("[%3d] = (%2d) %s\n", i, token->type, buf);
}
}
}
}
}
}
#endif
void print_debug_info(struct wps_data *data, enum wps_parse_error fail, int line)
{
#if defined(SIMULATOR) || defined(__PCTOOL__)
if (debug_wps && wps_verbose_level)
{
dump_skin(data);
}
#endif /* SIMULATOR */
if (fail != PARSE_OK)
{
char buf[64];
DEBUGF("ERR: Failed parsing on line %d : ", line);
switch (fail)
{
case PARSE_OK:
break;
case PARSE_FAIL_UNCLOSED_COND:
DEBUGF("ERR: Unclosed conditional");
break;
case PARSE_FAIL_INVALID_CHAR:
DEBUGF("ERR: Unexpected conditional char after token %d: \"%s\"",
data->num_tokens-1,
get_token_desc(&data->tokens[data->num_tokens-1], buf, sizeof(buf), data)
);
break;
case PARSE_FAIL_COND_SYNTAX_ERROR:
DEBUGF("ERR: Conditional syntax error after token %d: \"%s\"",
data->num_tokens-1,
get_token_desc(&data->tokens[data->num_tokens-1], buf, sizeof(buf), data)
);
break;
case PARSE_FAIL_COND_INVALID_PARAM:
DEBUGF("ERR: Invalid parameter list for token %d: \"%s\"",
data->num_tokens,
get_token_desc(&data->tokens[data->num_tokens], buf, sizeof(buf), data)
);
break;
case PARSE_FAIL_LIMITS_EXCEEDED:
DEBUGF("ERR: Limits exceeded");
break;
}
DEBUGF("\n");
}
}
void debug_skin_usage(void)
{
#if defined(SIMULATOR) || defined(__PCTOOL__)
if (wps_verbose_level > 1)
#endif
DEBUGF("Skin buffer usage: %lu/%lu\n", (unsigned long)skin_buffer_usage(),
(unsigned long)(skin_buffer_usage() + skin_buffer_freespace()));
}
#endif /* DEBUG || SIMULATOR */

View file

@ -259,10 +259,10 @@
</source>
<dest>
*: "PLAY = Ano"
cowond2*: "MENU, or top-right = Ano"
cowond2*: "MENU, nebo vpravo nahoře = Ano"
iriverh100,iriverh120,iriverh300: "NAVI = Ano"
samsungyh*,ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*,sansaconnect: "SELECT = Ano"
mrobe500: "PLAY, POWER, or top-right = Ano"
mrobe500: "PLAY, POWER, nebo vpravo nahoře = Ano"
archosplayer: "(PLAY/STOP)"
vibe500: "OK = Ano"
</dest>
@ -1904,10 +1904,10 @@
*: "Auto-Change Directory"
</source>
<dest>
*: "Pokračovat další složkou"
*: "Pokračovat do další složky"
</dest>
<voice>
*: "Pokračovat další složkou"
*: "Pokračovat do další složky"
</voice>
</phrase>
<phrase>
@ -2243,14 +2243,14 @@
<dest>
*: "Vytvářím databázi... %d nalezeno (OFF pro návrat)"
iriverh100,iriverh120,iriverh300: "Vytvářím databázi... %d nalezeno (STOP pro návrat)"
ipod*: "Vytvářím databázi... %d found (PREV pro návrat)"
ipod*: "Vytvářím databázi... %d nalezeno (PREV pro návrat)"
iaudiox5,iaudiom5,gigabeat*,mrobe100: "Vytvářím databázi... %d nalezeno (LEFT pro návrat)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Vytvářím databázi... %d nalezeno (PREV pro návrat)"
gogearsa9200: "Vytvářím databázi.. %d nalezeno (REW pro návrat)"
archosplayer: "Vytvář. DB %d nalez."
</dest>
<voice>
*: "záznamů vytvořeno do databáze"
*: "Vytváření záznamů do databáze"
</voice>
</phrase>
<phrase>
@ -2909,7 +2909,7 @@
</source>
<dest>
*: none
remote_ticking: "Zredukova tikání"
remote_ticking: "Zredukovat tikání"
</dest>
<voice>
*: none
@ -5700,8 +5700,8 @@
</source>
<dest>
*: none
recording: "Mikrofón"
iriverh100,iriverh120,iriverh300: "Interní mikrofón"
recording: "Mikrofon"
iriverh100,iriverh120,iriverh300: "Interní mikrofon"
</dest>
<voice>
*: none
@ -6483,10 +6483,10 @@
*: "Recursively Insert Directories"
</source>
<dest>
*: "Vkládat složky rekurzivně"
*: "Vkládat podsložky"
</dest>
<voice>
*: "Vkládat složky rekurzivně"
*: "Vkládat podsložky"
</voice>
</phrase>
<phrase>
@ -6497,10 +6497,10 @@
*: "Recursively?"
</source>
<dest>
*: "Rekurzivně?"
*: "Vložit i podsložky?"
</dest>
<voice>
*: "Rekurzivně?"
*: "Vložit i podsložky?"
</voice>
</phrase>
<phrase>
@ -7650,7 +7650,7 @@
*: "Přidat do zástupců"
</dest>
<voice>
*: "Přidat do zástupců"
*: "Přidat do zástupců, položka ale nebude ozvučená"
</voice>
</phrase>
<phrase>
@ -10161,7 +10161,7 @@
</dest>
<voice>
*: none
rtc: "nula nula"
rtc: "nula"
</voice>
</phrase>
<phrase>
@ -11359,11 +11359,11 @@
</source>
<dest>
*: none
remote: "Dalkový stavový řádek"
remote: "Dálkový stavový řádek"
</dest>
<voice>
*: none
remote: "Dalkový stavový řádek"
remote: "Dálkový stavový řádek"
</voice>
</phrase>
<phrase>
@ -12539,10 +12539,10 @@
*: "Start File Browser Here"
</source>
<dest>
*: "Otevírat prohlížení souborů zde"
*: "Nastavit jako výchozí složku"
</dest>
<voice>
*: "Otevírat prohlížení souborů zde"
*: "Nastavit jako výchozí složku"
</voice>
</phrase>
<phrase>
@ -12553,10 +12553,10 @@
*: "Start File Browser at /"
</source>
<dest>
*: "Nastavit prohlížení souborů na root"
*: "Výchozí složku nastavit na root"
</dest>
<voice>
*: "Nastavit prohlížení souborů na růt"
*: "Výchozí složku nastavit na růt"
</voice>
</phrase>
<phrase>
@ -12740,11 +12740,11 @@
</source>
<dest>
*: none
multidrive_usb: "Skrýt interni disk přes USB"
multidrive_usb: "Skrýt interní pamět přes USB"
</dest>
<voice>
*: none
multidrive_usb: "Skrýt interni disk přes ÚESBÉ"
multidrive_usb: "Skrýt interní pamět přes ÚESBÉ"
</voice>
</phrase>
<phrase>
@ -12778,20 +12778,6 @@
*: "Automatycky"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Zrušit časovač vypnutí"
</dest>
<voice>
*: "Zrušit časovač vypnutí, zbývá"
</voice>
</phrase>
<phrase>
id: LANG_SLEEP_TIMER_DURATION
desc: default sleep timer duration in minutes (unused in UI)
@ -12821,34 +12807,31 @@
</voice>
</phrase>
<phrase>
id: LANG_GLYPHS
desc: in settings_menu
id: LANG_SLEEP_TIMER_CANCEL_CURRENT
desc: shown instead of sleep timer when it's running
user: core
<source>
*: "Glyphs To Cache"
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Vyrovnávací paměť pro glyphy"
*: "Zrušit časovač vypnutí"
</dest>
<voice>
*: "Vyrovnávací paměť pro glyphy"
*: "Zrušit časovač vypnutí, zbývá"
</voice>
</phrase>
<phrase>
id: LANG_KEYCLICK_HARDWARE
desc: in keyclick settings menu
id: LANG_SHORTCUTS
desc: Title in the shortcuts menu
user: core
<source>
*: none
hardware_click: "Speaker Keyclick"
*: "Shortcuts"
</source>
<dest>
*: none
hardware_click: "Kliknutí přes reproduktor"
*: "Zástupci"
</dest>
<voice>
*: none
hardware_click: "Kliknutí přes reproduktor"
*: "Zástupci"
</voice>
</phrase>
<phrase>
@ -12869,17 +12852,34 @@
</voice>
</phrase>
<phrase>
id: LANG_SHORTCUTS
desc: Title in the shortcuts menu
id: LANG_KEYCLICK_HARDWARE
desc: in keyclick settings menu
user: core
<source>
*: "Shortcuts"
*: none
hardware_click: "Speaker Keyclick"
</source>
<dest>
*: "Zástupci"
*: none
hardware_click: "Kliknutí přes reproduktor"
</dest>
<voice>
*: "Zástupci"
*: none
hardware_click: "Kliknutí přes reproduktor"
</voice>
</phrase>
<phrase>
id: LANG_GLYPHS
desc: in settings_menu
user: core
<source>
*: "Glyphs To Cache"
</source>
<dest>
*: "Vyrovnávací paměť pro glyphy"
</dest>
<voice>
*: "Vyrovnávací paměť pro glyphy"
</voice>
</phrase>
<phrase>
@ -12910,3 +12910,34 @@
*: "Stisk klávesy restartuje časovač vypnutí"
</voice>
</phrase>
<phrase>
id: LANG_CONSTRAIN_NEXT_FOLDER
desc: in settings_menu. Whether LANG_NEXT_FOLDER should be constrained to directories within LANG_SET_AS_START_DIR
user: core
<source>
*: "Constrain Auto-Change"
</source>
<dest>
*: "Omezit pokračování do další složky"
</dest>
<voice>
*: "Omezit pokračování do další složky"
</voice>
</phrase>
<phrase>
id: LANG_USE_SHORTCUTS_INSTEAD_OF_QS
desc: in settings_menu.
user: core
<source>
*: none
quickscreen: "Use Shortcuts Menu Instead of Quick Screen"
</source>
<dest>
*: none
quickscreen: "Použít menu Zástupci místo Rychlé nabídky"
</dest>
<voice>
*: none
quickscreen: "Použít menu Zástupci místo Rychlé nabídky"
</voice>
</phrase>

View file

@ -12703,10 +12703,10 @@
*: "Set As Playlist Catalogue Directory"
</source>
<dest>
*: "Ustaw jako katalog listy odtwarzania"
*: "Ustaw jako katalog list odtwarzania"
</dest>
<voice>
*: "Ustaw jako katalog listy odtwarzania"
*: "Ustaw jako katalog list odtwarzania"
</voice>
</phrase>
<phrase>
@ -12731,10 +12731,10 @@
*: "Reset Playlist Catalogue Directory"
</source>
<dest>
*: "Resetuj katalog listy odtwarzania"
*: "Zresetuj katalog list odtwarzania"
</dest>
<voice>
*: "Resetuj katalog listy odtwarzania"
*: "Zresetuj katalog list odtwarzania"
</voice>
</phrase>
<phrase>
@ -12745,10 +12745,10 @@
*: "Glyphs To Cache"
</source>
<dest>
*: "Kopiuj tekst do Schowka"
*: "Rozmiar bufora znaków"
</dest>
<voice>
*: "Kopiuj tekst do schowka"
*: "Rozmiar bufora znaków"
</voice>
</phrase>
<phrase>
@ -12778,11 +12778,11 @@
</source>
<dest>
*: none
hardware_click: "Dźwięk klawiszy (głośnik)"
hardware_click: "Dźwięk przycisków (głośnik)"
</dest>
<voice>
*: none
hardware_click: "Dźwięk klawiszy (głośnik)"
hardware_click: "Dźwięk przycisków (głośnik)"
</voice>
</phrase>
<phrase>
@ -12795,11 +12795,11 @@
</source>
<dest>
*: none
hardware_click: "Dźwięk klawiszy (słuchawki)"
hardware_click: "Dźwięk przycisków (słuchawki)"
</dest>
<voice>
*: none
hardware_click: "Dźwięk klawiszy (słuchawki)"
hardware_click: "Dźwięk przycisków (słuchawki)"
</voice>
</phrase>
<phrase>
@ -12812,11 +12812,11 @@
</source>
<dest>
*: none
touchscreen: "Line Padding in Lists"
touchscreen: "Odstępy międzyliniowe w listach"
</dest>
<voice>
*: none
touchscreen: "Line Padding in Lists"
touchscreen: "Odstępy międzyliniowe w listach"
</voice>
</phrase>
<phrase>
@ -12827,10 +12827,10 @@
*: "Automatic"
</source>
<dest>
*: "Automatycznie"
*: "Automatyczny"
</dest>
<voice>
*: "Automatycznie"
*: "Automatyczny"
</voice>
</phrase>
<phrase>
@ -12855,10 +12855,10 @@
*: "Cancel Sleep Timer"
</source>
<dest>
*: "Anuluj budzik"
*: "Anuluj usypianie"
</dest>
<voice>
*: "Anuluj budzik"
*: "Anuluj usypianie"
</voice>
</phrase>
<phrase>
@ -12869,10 +12869,10 @@
*: "Startup/Shutdown"
</source>
<dest>
*: "Włącz/Wyłącz"
*: "Włączanie/Wyłączanie"
</dest>
<voice>
*: "Włącz/Wyłącz"
*: "Włączanie/Wyłączanie"
</voice>
</phrase>
<phrase>
@ -12883,10 +12883,10 @@
*: "Restart Sleep Timer On Keypress"
</source>
<dest>
*: "Resetuj budzik po naciśnięciu klawisza"
*: "Zresetuj usypiacz przy naciśnięciu przycisku"
</dest>
<voice>
*: "Resetuj budzik po naciśnięciu klawisza"
*: "Zresetuj usypiacz przy naciśnięciu przycisku"
</voice>
</phrase>
<phrase>
@ -12897,10 +12897,10 @@
*: "Default Sleep Timer Duration"
</source>
<dest>
*: "Domyślna pora alarmu"
*: "Domyślny czas usypiacza"
</dest>
<voice>
*: "Domyślna pora alarmu"
*: "Domyślny czas usypiacza"
</voice>
</phrase>
<phrase>
@ -12911,9 +12911,9 @@
*: "Start Sleep Timer On Boot"
</source>
<dest>
*: "Ustaw alarm przy włączeniu"
*: "Uruchom usypiacz przy włączeniu"
</dest>
<voice>
*: "Ustaw alarm przy włączeniu"
*: "Uruchom usypiacz przy włączeniu"
</voice>
</phrase>

View file

@ -215,7 +215,7 @@ static int init_dircache(bool preinit)
if (!global_settings.dircache)
return 0;
# ifdef HAVE_EEPROM_SETTINGS
# if 0
if (firmware_settings.initialized && firmware_settings.disk_clean
&& preinit)
{

View file

@ -740,8 +740,7 @@ static int sd_setcmp(int regval)
static void set_sleep(bool sleep)
{
if (sleep)
tuner_power(false);
tuner_power(!sleep);
if (sleep || tuner_awake())
return;
@ -749,7 +748,6 @@ static void set_sleep(bool sleep)
(TUNER_PRESENT | TUNER_POWERED))
return;
tuner_power(true);
enable_afc(false);
/* 2. Calibrate the IF frequency at 110 kHz: */

View file

@ -368,6 +368,10 @@ void si4700_init(void)
mutex_init(&fmr_mutex);
/* check device id */
if (si4700_detect()) {
/* make sure the tuner goes into a well-defined powered-off state */
si4700_sleep(0);
si4700_sleep(1);
#ifdef HAVE_RDS_CAP
si4700_rds_init();
#endif

View file

@ -82,6 +82,8 @@ void panicf( const char *fmt, ...)
vsnprintf( panic_buf, sizeof(panic_buf), fmt, ap );
va_end( ap );
lcd_set_viewport(NULL);
#ifdef HAVE_LCD_CHARCELLS
lcd_double_height(false);
lcd_puts(0, 0, "*PANIC*");
@ -98,7 +100,6 @@ void panicf( const char *fmt, ...)
lcd_clear_display();
lcd_setfont(FONT_SYSFIXED);
lcd_set_viewport(NULL);
lcd_puts(1, y++, (unsigned char *)"*PANIC*");
{
/* wrap panic line */

View file

@ -70,7 +70,7 @@ unsigned char rc_buf[5];
/* ================================================== */
static struct semaphore rc_thread_wakeup;
static unsigned int remote_thread_id;
static int remote_stack[256/sizeof(int)];
static int remote_stack[512/sizeof(int)];
static const char * const remote_thread_name = "remote";
static bool remote_wait_ready(int ready_mask)

View file

@ -24,7 +24,7 @@
#include "usb-s3c6400x.h"
#include "cpu.h"
#ifdef HAVE_USBSTACK
#if 0 //def HAVE_USBSTACK
#include "usb_core.h"
#include "usb_drv.h"
#include "power.h"
@ -85,4 +85,5 @@ void usb_init_device(void)
PWRCON(0) |= 0x4;
PWRCON(1) |= 0x8;
#endif
}
#endif

View file

@ -1,6 +1,6 @@
skin_buffer.c
skin_parser.c
#if !defined(ROCKBOX) || defined(__PCTOOL__)
#if !defined(ROCKBOX) || defined(__PCTOOL__) || defined(SIMULATOR)
skin_debug.c
#endif
skin_scan.c

View file

@ -283,7 +283,7 @@ void skin_debug_params(int count, struct skin_tag_parameter params[])
}
}
void skin_debug_indent()
void skin_debug_indent(void)
{
int i;
for(i = 0; i < debug_indent_level; i++)
@ -293,7 +293,7 @@ void skin_debug_indent()
#endif
#define MIN(a,b) ((a<b)?(a):(b))
void skin_error_format_message()
void skin_error_format_message(void)
{
int i;
char text[128];

View file

@ -28,7 +28,7 @@ extern "C"
{
#endif
#if !defined(ROCKBOX) || defined(__PCTOOL__)
#if !defined(ROCKBOX) || defined(__PCTOOL__) || defined(SIMULATOR)
#define SKINPARSER_DEBUG
#endif
@ -41,7 +41,7 @@ int skin_error_col(void);
char* skin_error_message(void);
void skin_clear_errors(void);
void skin_debug_tree(struct skin_element* root);
void skin_error_format_message();
void skin_error_format_message(void);
/* Auxiliary debug functions */
void skin_debug_params(int count, struct skin_tag_parameter params[]);

View file

@ -1,8 +1,8 @@
$publicrelease="3.10";
$manualrelease="3.10";
$voicerelease="3.10";
$releasedate="December 7, 2011";
$releasenotes="/wiki/ReleaseNotes310";
$publicrelease="3.11.2";
$manualrelease="3.11.2";
$voicerelease="3.11.2";
$releasedate="April 12, 2012";
$releasenotes="/wiki/ReleaseNotes3112";
%builds = (
'archosav300' => {
@ -113,7 +113,7 @@ $releasenotes="/wiki/ReleaseNotes310";
},
'ipodnano2g' => {
name => 'iPod Nano 2nd gen',
status => 3,
status => 2,
},
'ipodvideo' => {
name => 'iPod Video',
@ -223,7 +223,7 @@ $releasenotes="/wiki/ReleaseNotes310";
},
'sansac200v2' => {
name => 'SanDisk Sansa c200 v2',
status => 2,
status => 3,
icon => 'sansac200',
},
'sansaclip' => {

View file

@ -1,4 +1,3 @@
../../apps/gui/skin_engine/wps_debug.c
../../apps/gui/skin_engine/skin_parser.c
../../apps/gui/skin_engine/skin_backdrops.c
../../apps/gui/viewport.c

View file

@ -1,5 +1,5 @@
#!/usr/bin/perl
$version="3.5RC";
$version="3.11.2";
require "tools/builds.pm";

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
$version="3.0";
$version="3.11.2";
require "tools/builds.pm";

View file

@ -1,34 +0,0 @@
#!/bin/sh
version="3.0"
srcdir=.
tempdir=rockbox-temp
outfile=rockbox-$version.7z
# remove previous leftovers
rm -rf $tempdir
cd $srcdir
# create the dir name based on revision number
rbdir=$tempdir/rockbox-$version
# create new temp dir
mkdir -p $rbdir
# copy everything to the temp dir
svn ls -R | xargs -Imoo cp --parents moo $rbdir 2>/dev/null
cd $tempdir
rm -f $outfile
# 7zip the entire directory
7zr a $outfile rockbox*
# world readable please
chmod a+r $outfile
# remove temporary files
rm -rf $tempdir

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
$version="3.0";
$version="3.11.2";
require "tools/builds.pm";

23
utils/common/tarball.py Executable file
View file

@ -0,0 +1,23 @@
#!/usr/bin/python
import gitscraper
import tempfile
import subprocess
import os
import shutil
version = "v3.11"
repository = "."
basename = "rockbox-" + version
tree = gitscraper.get_refs(repository)["refs/remotes/origin/" + version]
tmpbase = tempfile.mkdtemp()
tmpdir = tmpbase + "/" + basename
gitscraper.archive_files(repository, tree, [], basename, tmpdir)
print "7z-ing files"
output = subprocess.Popen(["7z", "a",
os.path.join(os.getcwd(), basename + ".7z"), basename], cwd=tmpbase)
cmdout = output.communicate()
shutil.rmtree(tmpbase)