This class will manage save files so paths don't need to be resolved in
multiple places. I'll also use it for reading and writing with version
information.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
I decided to put the library into a namespace to keep the code clean. I
also added an update algorithm and made minor naming changes.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
I renamed "tags" to "groups" to avoid confusion with ID3 tags. I also
thought out a better plan for eventually implementing user defined tags
so that I can build up to them with testing along the way. With any
luck, I won't overwhelm myself with features =).
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
Up until now I've just been coding whatever I feel like without thinking
about it too much. This time I'm actually going to come up with an
ocarina design and then implement it according to the document. The doc
can then act as a reference for how and why things are done for future
work.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
Right now it's just a toplevel window. I also added a script for
launching the new gui without needing to manually set the environment
variable.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
I only have one application so there is no point in having a way to
create multiple application directories.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
The plan is to port everything to gtkmm since using the C functions is
beginning to get annoying. Compile the new code using `scons newgui`
for now.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
It's a 2 line function that was used in only one place. Time to remove
it and simplify the surrounding code.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
I was keeping a vector of objects, and then pass pointers to these
objects around everywhere. HOWEVER, when vectors are resized they
allocate new memory and copy things over invalidating iterators and
pointers to the original objects. This can cause memory corruption
issues when I try to use a pointer to an object that no longer exists.
The simple solution? Allocate tracks dynamically and then store the
pointer in the library path.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
I want to remove the various idle task types that have built up and
replace everything with a single idle type. I also want the idle layer
to be the only place new tasks are allocated.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
Now that I'm using vectors for everything I don't need to maintain my
own class. Nothing uses it now, so it can be safely removed.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
For each library path, I replace the linked list with a vector allowing
me to easily index into the list to find tracks.
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This corrects the package build to look for a tarbal named
"ocarina-5.11.1.tar.gz" instead of "ocarina-5.11.tar.gz"
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
Otherwise songs might error out part way through playing and skip to
something else. It doesn't make sense and I wish I knew why :(
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>