Commit graph

78 commits

Author SHA1 Message Date
Thomas Martitz
cae4ae2c71 Second try: Introduce plugin_crt0.c that every plugin links.
It handles exit() properly, calling the handler also when the plugin returns
normally (also make exit() more standard compliant while at it).
It also holds PLUGIN_HEADER, so that it doesn't need to be in each plugin anymore.

To work better together with callbacks passed to rb->default_event_handler_ex() introduce exit_on_usb() which will call the exit handler before showing the usb screen and exit() after it.
In most cases rb->default_event_handler_ex() was passed a callback which was manually called at all other return points. This can now be done via atexit().

In future plugin_crt0.c could also handle clearing bss, initializing iram and more.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27873 a1c6a512-1295-4272-9138-f99709370657
2010-08-24 14:30:46 +00:00
Thomas Martitz
93cb949372 Revert "Introduce plugin_crt0.c that every plugin links."
Too much errors and no time to fix them now.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27863 a1c6a512-1295-4272-9138-f99709370657
2010-08-23 17:12:26 +00:00
Thomas Martitz
abdc5935be Introduce plugin_crt0.c that every plugin links.
It handles exit() properly, calling the handler also when the plugin returns
normally (also it makes exit() more standard compliant while at it).
It also holds PLUGIN_HEADER, so that it doesn't need to be in each plugin anymore.

To work better together with callbacks passed to rb->default_event_handler_ex introduce exit_on_usb() which will call the exit handler before showing the usb screen and exit() after it.
In most cases it was passed a callback which was manually called at all other return points. This can now be done via atexit().

In future plugin_crt0.c could also handle clearing bss, initializing iram and more.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27862 a1c6a512-1295-4272-9138-f99709370657
2010-08-23 16:56:49 +00:00
Andrew Mahone
3651a903f3 Add missing PictureFlow overlay source, fix properties on new files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20865 a1c6a512-1295-4272-9138-f99709370657
2009-05-07 01:40:25 +00:00
Andrew Mahone
5621fd393a Build pictureflow using overlay on lowmem targets, support JPEG AA in PF on all targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20864 a1c6a512-1295-4272-9138-f99709370657
2009-05-07 01:23:13 +00:00
Andrew Mahone
eef7945a97 Move YUV->RGB in JPEG load from before scaler to after scaler. Required change to struct custom_format, so sorted the plugin API as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20856 a1c6a512-1295-4272-9138-f99709370657
2009-05-06 04:53:56 +00:00
Andrew Mahone
20f76d61ae Make JPEG and BMP scaler optional with HAVE_JPEG and HAVE_BMP_SCALING, both defined for all targets that have HAVE_ALBUMART. Disable JPEG in PictureFlow and pluginlib album art search with 32KiB plugin buffer until PictureFlow
gets overlay support.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20851 a1c6a512-1295-4272-9138-f99709370657
2009-05-04 15:46:41 +00:00
Andrew Mahone
a8912a0c41 PictureFlow JPEG AA support for all non-mono targets (mono targets will need overlay for this).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20841 a1c6a512-1295-4272-9138-f99709370657
2009-05-02 04:06:49 +00:00
Andrew Mahone
3e2cf9a380 Undo revert of r20653
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20657 a1c6a512-1295-4272-9138-f99709370657
2009-04-08 10:38:55 +00:00
Andrew Mahone
54a0aeff5b fix accidental reverts in r20651
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20656 a1c6a512-1295-4272-9138-f99709370657
2009-04-08 10:27:38 +00:00
Andrew Mahone
05875e4ce1 Fix yellow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20653 a1c6a512-1295-4272-9138-f99709370657
2009-04-08 04:06:26 +00:00
Andrew Mahone
c79fb9ce06 FS#9992: remove PLA use from PictureFlow, replacing it with maps designed for each target, and inheriting the targets' standard actions
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20651 a1c6a512-1295-4272-9138-f99709370657
2009-04-08 03:50:44 +00:00
Jens Arnold
1d8679e7ec Pictureflow optimisations: (1) No need to restore the drawmode, the core takes care of that. (2) Making the angle positive before masking is redundant. (3) Slide rendering: * Precalculate a faded reflection table for alpha < 256, saving a multiply in the inner loop. * Group the inner loops so that less variables are precalculated, helping to keep stuff in registers. * Combine loop conditions so that a single check is sufficient.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20456 a1c6a512-1295-4272-9138-f99709370657
2009-03-22 14:45:14 +00:00
Jens Arnold
de910d862c Greyscale targets: Make the gradient a bit brighter and simplify the calculation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20253 a1c6a512-1295-4272-9138-f99709370657
2009-03-09 01:14:21 +00:00
Jens Arnold
87a22b2930 Revert the static'ing, as it causes crashes/freezes. Needs investigation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20229 a1c6a512-1295-4272-9138-f99709370657
2009-03-07 13:22:28 +00:00
Jens Arnold
c99446dd89 Made all local functions static, saving ~500 bytes of binsize on coldfire and SH1, and ~150 bytes on ARM. * Removed an unused static inline function.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20228 a1c6a512-1295-4272-9138-f99709370657
2009-03-07 13:00:09 +00:00
Jens Arnold
9a6d91940c Mono targets: Make sure the splash screen uses white on black and the logo doesn't look inverted.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20224 a1c6a512-1295-4272-9138-f99709370657
2009-03-07 01:22:49 +00:00
Jens Arnold
5e313256b2 Performance tweaks for SH1. No changes for coldfire and ARM, apart from changing a bunch of signed shifts to unsigned shifts.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20223 a1c6a512-1295-4272-9138-f99709370657
2009-03-07 00:16:27 +00:00
Andrew Mahone
6f030a01c9 add the needed plugin API exports for pictureflow to hwcodec, use the audio buffer if plugin buffer is too small, build on any target with bitmap + tagcache
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20213 a1c6a512-1295-4272-9138-f99709370657
2009-03-06 01:08:02 +00:00
Andrew Mahone
cc5689c153 pictureflow: use correct priority to free slides when extending cache on right, catch and handle failure to find a slide to free
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20212 a1c6a512-1295-4272-9138-f99709370657
2009-03-06 00:38:50 +00:00
Andrew Mahone
d8b6a950c6 FS#9919 pictureflow cache rework, footprint reduction, buflib use
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20203 a1c6a512-1295-4272-9138-f99709370657
2009-03-04 21:23:49 +00:00
Frank Gevaerts
281227321e Spelling fixes (UK English) by Alex Parker
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20009 a1c6a512-1295-4272-9138-f99709370657
2009-02-15 12:56:25 +00:00
Andrew Mahone
0222d0a5eb align frontmost edge of slides with plane of display
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19948 a1c6a512-1295-4272-9138-f99709370657
2009-02-08 22:17:21 +00:00
Andrew Mahone
c02e469bbb simplify zo calculation a bit, "zoom" the center margin value and add term for zo to offset calculation, so that margins are still correct when zooming
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19947 a1c6a512-1295-4272-9138-f99709370657
2009-02-08 22:17:15 +00:00
Andrew Mahone
eda5ed0624 rewrite of pictureflow renderer with 3D projection, this will allow many possible tweaks in the future, such as moving only the center slide "closer", changing the angle of side slides, etc, while
keeping the same meaning for the center margin and spacing settings

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19942 a1c6a512-1295-4272-9138-f99709370657
2009-02-07 22:18:26 +00:00
Andrew Mahone
79c25649b7 use a table-free clz on coldfire, where it benchmarks a bit faster
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19933 a1c6a512-1295-4272-9138-f99709370657
2009-02-06 05:43:00 +00:00
Andrew Mahone
ba4be51571 per Jens Arnold's suggestion:
use platform clz instruction only on ARMv5+, where we know it returns 32 for a 0 input, and remove the special case for 0

use binary search only to find most significant four bits, then use lookup table to add number of leading zeroes within those bits

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19888 a1c6a512-1295-4272-9138-f99709370657
2009-01-30 10:52:30 +00:00
Andrew Mahone
b081a38131 correct clz in pictureflow.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19887 a1c6a512-1295-4272-9138-f99709370657
2009-01-30 07:22:59 +00:00
Andrew Mahone
78409ff50c remove 64-bit math from fdiv in pictureflow.c, replacing it with limited pre-shifting of input values
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19886 a1c6a512-1295-4272-9138-f99709370657
2009-01-30 03:40:16 +00:00
Andrew Mahone
8f1d8be7a7 pictureflow tweaks:
allow wider covers on landscape, bringing square covers closer to suggested size from pre-scaling pictureflow

tweak defaults for center margin and cover spacing a little bit

change default title display to bottom if LCD_HEIGHT <= 100

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19877 a1c6a512-1295-4272-9138-f99709370657
2009-01-29 03:30:41 +00:00
Andrew Mahone
83350f2fed fix divide-by-zero error in pictureflow when selecting album
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19876 a1c6a512-1295-4272-9138-f99709370657
2009-01-29 03:30:33 +00:00
Andrew Mahone
499426caf9 remove MEM_FUNCTION_WRAPPERS, and private mem* implementations from plugins, and replace with pluginlib implementations in plugins/lib/gcc-support.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19847 a1c6a512-1295-4272-9138-f99709370657
2009-01-24 22:57:57 +00:00
Andrew Mahone
d08d015766 fix red on mono hardware - add mem function wrappers to pictureflow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19839 a1c6a512-1295-4272-9138-f99709370657
2009-01-24 09:53:12 +00:00
Andrew Mahone
6fc558b2db plugins/lib/feature_wrappers.h to provide easy access to some feature that may be in either API or pluginlib depending on target
pictureflow modified to use feature wrappers, and built on all targets that have tagcache and are swcodec


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19837 a1c6a512-1295-4272-9138-f99709370657
2009-01-24 09:29:22 +00:00
Andrew Mahone
3f7d137725 fix for targets using greylib in pictureflow, they need to set drawmode for both normal and greylib drawing, so using MYLCD for that was inappropriate
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19836 a1c6a512-1295-4272-9138-f99709370657
2009-01-24 08:15:37 +00:00
Andrew Mahone
5d3fd5d5ce replace DIV255 with an inline function, the macro version caused unneeded recalculations
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19809 a1c6a512-1295-4272-9138-f99709370657
2009-01-21 05:10:16 +00:00
Andrew Mahone
8e9e6635a1 fix red on grayscale in pictureflow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19803 a1c6a512-1295-4272-9138-f99709370657
2009-01-20 17:56:59 +00:00
Andrew Mahone
1b13299769 scaler optimizations:
on sh, use 8.24 fixed-point C math for final division in scaler

on coldfire, use 8.32 fixed-point via emac

on other architectures, use 8.32 fixed-point C math

use shift-and-add to divide when adjusting scale factors in pictureflow

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19802 a1c6a512-1295-4272-9138-f99709370657
2009-01-20 17:24:49 +00:00
Andrew Mahone
5ad02f701b use multiply-shift to scale reciprocals for rgb16 output, instead of
multiply-divide

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19788 a1c6a512-1295-4272-9138-f99709370657
2009-01-18 02:45:22 +00:00
Andrew Mahone
0b41f0599f unify pointers to value for configfile, and add TYPE_BOOL type, used by
pictureflow

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19786 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 22:53:12 +00:00
Andrew Mahone
2fecb713ea fix pictureflow, previous fix caused cache to never be marked as good
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19785 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 20:53:35 +00:00
Andrew Mahone
44ab8a63ea fix yellow, but in the long run, configfile needs a TYPE_BOOL as a clean fix to this
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19783 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 10:58:21 +00:00
Andrew Mahone
6b32a2d9cd return to transposed images in cache, via new output plugins, to save
multiplies in render_slide

fix empty slide regen on cache version change

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19782 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 09:42:26 +00:00
Andrew Mahone
4541ae9b5c remove unused fh from create_albumart_cache
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19781 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 07:25:49 +00:00
Andrew Mahone
313eaf8e37 pictureflow configfile conversion:
settings use configfile from pluginlib

cache version is stored in config file, so that changes to the cache
file format can trigger rebuild automatically

cache version is set to 0 to flag cache as needing rebuild

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19780 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 07:13:11 +00:00
Andrew Mahone
56376e6a42 pictureflow cleanup:
remove some old, unused #defines

split DISPLAY_SIZE into DISPLAY_WIDTH and DISPLAY_HEIGHT

scale DISPLAY_WIDTH to compensate for pixel aspect ratio

use new DISPLAY_HEIGHT where appropriate, instead of calculating based
on LCD size

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19779 a1c6a512-1295-4272-9138-f99709370657
2009-01-17 07:12:59 +00:00
Andrew Mahone
23d9812273 loader-initialized global plugin API:
struct plugin_api *rb is declared in PLUGIN_HEADER, and pointed to by
__header.api

the loader uses this pointer to initialize rb before calling entry_point

entry_point is no longer passed a pointer to the plugin API

all plugins, and pluginlib functions, are modified to refer to the
global rb

pluginlib functions which only served to copy the API pointer are
removed

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19776 a1c6a512-1295-4272-9138-f99709370657
2009-01-16 10:34:40 +00:00
Andrew Mahone
35677cbc54 fix bug causing pictureflow to write one column past left side of screen, resulting in a stripe of rightmost slide appearing on the left side of the screen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19775 a1c6a512-1295-4272-9138-f99709370657
2009-01-16 08:18:14 +00:00
Andrew Mahone
6e54d94908 reduce pictureflow's fade_color by one multiply, and a few shifts, while still maintaining reasonable quality
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19770 a1c6a512-1295-4272-9138-f99709370657
2009-01-14 08:15:35 +00:00
Andrew Mahone
2fbf09752d remove align_buffer from firmare/general.c, replacing with ALIGN_BUFFER macro, and replace all uses of it (only resize.c in core, and pictureflow and mpegplayer plugins), remove it from plugin_api,
and remove wrapper for it from plugin.h


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19758 a1c6a512-1295-4272-9138-f99709370657
2009-01-13 13:48:26 +00:00