<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rockbox/apps/tagtree.c, branch quake5</title>
<subtitle>My Rockbox tree</subtitle>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/'/>
<entry>
<title>tagtree.c-&gt;loadroot() guard against overflow</title>
<updated>2019-07-10T07:38:36+00:00</updated>
<author>
<name>William Wilgus</name>
<email>me.theuser@yahoo.com</email>
</author>
<published>2018-12-22T18:45:02+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=3e27705eb9a68a07983c84b2771216c010c7ba21'/>
<id>3e27705eb9a68a07983c84b2771216c010c7ba21</id>
<content type='text'>
forum user chris_s noted an possible unhandled cache overflow

Change-Id: Ia79399d6581ef6b635578896519fda8126c731d7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
forum user chris_s noted an possible unhandled cache overflow

Change-Id: Ia79399d6581ef6b635578896519fda8126c731d7
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix menu warnings</title>
<updated>2018-10-17T22:06:31+00:00</updated>
<author>
<name>William Wilgus</name>
<email>me.theuser@yahoo.com</email>
</author>
<published>2018-10-16T03:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=dd40c46d50f9f22643b828e80783d3576b9c1d50'/>
<id>dd40c46d50f9f22643b828e80783d3576b9c1d50</id>
<content type='text'>
change offending bool return to int

warning: cast between incompatible function types from
'_Bool (*)(void)' to 'int (*)(void)' [-Wcast-function-type]

forgot to remove -- typedef int (*menu_function)(void);

Change-Id: Ie4c8d3ddb0fb7843c4ec584203350d658d6bee3e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
change offending bool return to int

warning: cast between incompatible function types from
'_Bool (*)(void)' to 'int (*)(void)' [-Wcast-function-type]

forgot to remove -- typedef int (*menu_function)(void);

Change-Id: Ie4c8d3ddb0fb7843c4ec584203350d658d6bee3e
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix tagtree from blowing up when its buffer moves</title>
<updated>2017-02-11T01:58:03+00:00</updated>
<author>
<name>Michael Sevakis</name>
<email>jethead71@rockbox.org</email>
</author>
<published>2017-02-11T01:10:14+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=6436c6e749ab04fbd5d97804a6a1c3b3122b326d'/>
<id>6436c6e749ab04fbd5d97804a6a1c3b3122b326d</id>
<content type='text'>
I noticed that after booting with the external storage removed,
playing from tagtree, inserting the card, forcing dircache to
reallocate from the debug screen, and trying to reenter tagtree,
it would data abort because the dircache reallaction to a larger
size caused the tagtree buffer to move.

Adjustment to at least one pointer (csi) was missed. Since it's
non-trivial there to determine when things should be NULL and
when they shouldn't, add check for menu too before moving it.
As for the rest, who knows.

Change-Id: Iea6538a2091b4b47083f39296555efc47edf8ba8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I noticed that after booting with the external storage removed,
playing from tagtree, inserting the card, forcing dircache to
reallocate from the debug screen, and trying to reenter tagtree,
it would data abort because the dircache reallaction to a larger
size caused the tagtree buffer to move.

Adjustment to at least one pointer (csi) was missed. Since it's
non-trivial there to determine when things should be NULL and
when they shouldn't, add check for menu too before moving it.
As for the rest, who knows.

Change-Id: Iea6538a2091b4b47083f39296555efc47edf8ba8
</pre>
</div>
</content>
</entry>
<entry>
<title>events: Rework event subsystem (add_event, send_event) to be more versatile.</title>
<updated>2014-03-14T22:36:30+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2014-03-14T22:15:16+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=470989bd708d9a425dbbf2d83b8fcbd0a8d0f488'/>
<id>470989bd708d9a425dbbf2d83b8fcbd0a8d0f488</id>
<content type='text'>
add_event_ex is added that takes an extra user_data pointer. This pointer is
passed to the callback (add_event and add_event_ex have slightly different
callbacks types). All callbacks also get the event id passed. Events added
with add_event_ex must be removed with remove_event_ex because the user_data
pointer must match in addition to the callback pointer.

On the other add_event is simplified to omit the oneshort parameter which
was almost always false (still there with add_event_ex).

As a side effect the ata_idle_notify callbacks are changed as well, they
do not take a data parameter anymore which was always NULL anyway.

This commit also adds some documentation to events.h

Change-Id: I13e29a0f88ef908f175b376d83550f9e0231f772
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
add_event_ex is added that takes an extra user_data pointer. This pointer is
passed to the callback (add_event and add_event_ex have slightly different
callbacks types). All callbacks also get the event id passed. Events added
with add_event_ex must be removed with remove_event_ex because the user_data
pointer must match in addition to the callback pointer.

On the other add_event is simplified to omit the oneshort parameter which
was almost always false (still there with add_event_ex).

As a side effect the ata_idle_notify callbacks are changed as well, they
do not take a data parameter anymore which was always NULL anyway.

This commit also adds some documentation to events.h

Change-Id: I13e29a0f88ef908f175b376d83550f9e0231f772
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement time-based resume and playback start.</title>
<updated>2014-03-10T03:12:30+00:00</updated>
<author>
<name>Michael Sevakis</name>
<email>jethead71@rockbox.org</email>
</author>
<published>2013-07-14T11:59:39+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=31b712286721dd606940c7b557d03e3f714b9604'/>
<id>31b712286721dd606940c7b557d03e3f714b9604</id>
<content type='text'>
This complements offset-based resume and playback start funcionality.
The implementation is global on both HWCODEC and SWCODEC.

Basically, if either the specified elapsed or offset are non-zero,
it indicates a mid-track resume.

To resume by time only, set elapsed to nonzero and offset to zero.
To resume by offset only, set offset to nonzero and elapsed to zero.

Which one the codec uses and which has priority is up to the codec;
however, using an elapsed time covers more cases:

* Codecs not able to use an offset such as VGM or other atomic
formats

* Starting playback at a nonzero elapsed time from a source that
contains no offset, such as a cuesheet

The change re-versions pretty much everything from tagcache to nvram.

Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38
Reviewed-on: http://gerrit.rockbox.org/516
Reviewed-by: Michael Sevakis &lt;jethead71@rockbox.org&gt;
Tested: Michael Sevakis &lt;jethead71@rockbox.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This complements offset-based resume and playback start funcionality.
The implementation is global on both HWCODEC and SWCODEC.

Basically, if either the specified elapsed or offset are non-zero,
it indicates a mid-track resume.

To resume by time only, set elapsed to nonzero and offset to zero.
To resume by offset only, set offset to nonzero and elapsed to zero.

Which one the codec uses and which has priority is up to the codec;
however, using an elapsed time covers more cases:

* Codecs not able to use an offset such as VGM or other atomic
formats

* Starting playback at a nonzero elapsed time from a source that
contains no offset, such as a cuesheet

The change re-versions pretty much everything from tagcache to nvram.

Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38
Reviewed-on: http://gerrit.rockbox.org/516
Reviewed-by: Michael Sevakis &lt;jethead71@rockbox.org&gt;
Tested: Michael Sevakis &lt;jethead71@rockbox.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tagtree: Use strnatcasecmp() for the database browser too.</title>
<updated>2014-01-15T22:18:35+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2014-01-15T22:18:35+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=84c7d6133bf8a43688f1ac56d774fb94b1d3eed5'/>
<id>84c7d6133bf8a43688f1ac56d774fb94b1d3eed5</id>
<content type='text'>
Even though you can insert leading zeros that makes ascii sort work for
numbers, sometimes the leading zeros don't suffice. In order to always
sort numerically strnatcasecmp() is needed.

With the default tagnavi.config this affects albums with discnum &gt; 9
or tracnums &gt; 99. This FS#12888.

Change-Id: Ie265c86eaf6dd07b6beda9e5eef25eb81eef8fd4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Even though you can insert leading zeros that makes ascii sort work for
numbers, sometimes the leading zeros don't suffice. In order to always
sort numerically strnatcasecmp() is needed.

With the default tagnavi.config this affects albums with discnum &gt; 9
or tracnums &gt; 99. This FS#12888.

Change-Id: Ie265c86eaf6dd07b6beda9e5eef25eb81eef8fd4
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of some superfluous single-purpose functions in playback.</title>
<updated>2013-07-13T04:08:51+00:00</updated>
<author>
<name>Michael Sevakis</name>
<email>jethead71@rockbox.org</email>
</author>
<published>2013-07-12T16:06:38+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=023f6b6efd5407dc77c1253789f61baabb6607d6'/>
<id>023f6b6efd5407dc77c1253789f61baabb6607d6</id>
<content type='text'>
* Remove explicit tracking of elapsed time of previous track.
* Remove function to obtain auto skip flag.
* Most playback events now carry the extra information instead and
  pass 'struct track_event *' for data.
* Tweak scrobbler to use PLAYBACK_EVENT_TRACK_FINISH, which makes
  it cleaner and removes the struct mp3entry.

Change-Id: I500d2abb4056a32646496efc3617406e36811ec5
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Remove explicit tracking of elapsed time of previous track.
* Remove function to obtain auto skip flag.
* Most playback events now carry the extra information instead and
  pass 'struct track_event *' for data.
* Tweak scrobbler to use PLAYBACK_EVENT_TRACK_FINISH, which makes
  it cleaner and removes the struct mp3entry.

Change-Id: I500d2abb4056a32646496efc3617406e36811ec5
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix whitespace in files for following commit.</title>
<updated>2013-07-13T01:39:06+00:00</updated>
<author>
<name>Michael Sevakis</name>
<email>jethead71@rockbox.org</email>
</author>
<published>2013-07-12T16:03:20+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=ffa8626b0c93f8a65e0e17190917f7f173160842'/>
<id>ffa8626b0c93f8a65e0e17190917f7f173160842</id>
<content type='text'>
Change-Id: I4adb8a152e9b99fcd26d95da7334d7d0cbe2a036
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I4adb8a152e9b99fcd26d95da7334d7d0cbe2a036
</pre>
</div>
</content>
</entry>
<entry>
<title>GSoC/Buflib: Enable compaction in buflib.</title>
<updated>2011-08-30T14:01:45+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2011-08-30T14:01:45+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=baa070cca6d459a7c5aed81f29e4cc4f6c7410b3'/>
<id>baa070cca6d459a7c5aed81f29e4cc4f6c7410b3</id>
<content type='text'>
This enables the ability to allocate (and free) memory dynamically
without fragmentation, through compaction. This means allocations can move
and fragmentation be reduced. Most changes are preparing Rockbox for this,
which many times means adding a move callback which can temporarily disable
movement when the corresponding code is in a critical section.

For now, the audio buffer allocation has a central role, because it's the one
having allocated most. This buffer is able to shrink itself, for which it
needs to stop playback for a very short moment. For this,
audio_buffer_available() returns the size of the audio buffer which can
possibly be used by other allocations because the audio buffer can shrink.

lastfm scrobbling and timestretch can now be toggled at runtime without
requiring a reboot.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30381 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This enables the ability to allocate (and free) memory dynamically
without fragmentation, through compaction. This means allocations can move
and fragmentation be reduced. Most changes are preparing Rockbox for this,
which many times means adding a move callback which can temporarily disable
movement when the corresponding code is in a critical section.

For now, the audio buffer allocation has a central role, because it's the one
having allocated most. This buffer is able to shrink itself, for which it
needs to stop playback for a very short moment. For this,
audio_buffer_available() returns the size of the audio buffer which can
possibly be used by other allocations because the audio buffer can shrink.

lastfm scrobbling and timestretch can now be toggled at runtime without
requiring a reboot.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30381 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>GSoC/Buflib: Add buflib memory alocator to the core.</title>
<updated>2011-08-30T14:01:33+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2011-08-30T14:01:33+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=d0b72e25903574acb1cf9184a6052cdd646dbc37'/>
<id>d0b72e25903574acb1cf9184a6052cdd646dbc37</id>
<content type='text'>
The buflib memory allocator is handle based and can free and
compact, move or resize memory on demand. This allows to effeciently
allocate memory dynamically without an MMU, by avoiding fragmentation
through memory compaction.

This patch adds the buflib library to the core, along with
convinience wrappers to omit the context parameter. Compaction is
not yet enabled, but will be in a later patch. Therefore, this acts as a
replacement for buffer_alloc/buffer_get_buffer() with the benifit of a debug
menu.

See buflib.h for some API documentation.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30380 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The buflib memory allocator is handle based and can free and
compact, move or resize memory on demand. This allows to effeciently
allocate memory dynamically without an MMU, by avoiding fragmentation
through memory compaction.

This patch adds the buflib library to the core, along with
convinience wrappers to omit the context parameter. Compaction is
not yet enabled, but will be in a later patch. Therefore, this acts as a
replacement for buffer_alloc/buffer_get_buffer() with the benifit of a debug
menu.

See buflib.h for some API documentation.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30380 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
</feed>
