eds todo list 2.2.4 - 2.5

Ed Sweetman <[email protected]>
Newsgroups gmane.comp.audio.zinf.devel
Message-ID <[email protected]>
Todo List as of today	(the order is important for some things)
This is not a wishlist, this is stuff I will be doing.

To put this in perspective, at the speed things happen in zinf this list 
probably easily spans over a year, but the majority of that is at the end.

2.2.4/5
.	merge fixes to pipeline to fix all deadlocks dealing with it.
.	merge fixes to our halfassed delete/free's that dont break zinf
.	Figure out why fixing some deletes/free's we break zinf and fix
.	get volume fixes merged (committed that is)
.	get new lock merged (committed only after pipeline/delete fixes)

.	Make locks for plugins at the lowest level inherited non-virtual 
functions exist for it. Use these locks for all methods.  Locks then 
will only be created by the top end object if it requires more than one 
lock.  The one lock created at the bottom level is to be the main lock, 
the lock that is enabled/disabled from outside the plugin and within 
when called.  This is to minimize deadlocks and corruption caused by 
having methods below our top end method that alter data that our top end 
object uses but no lock was wrapped around the low end method because it 
was called from outside one of the top end's methods.  (this could 
happen, not sure if it does often).  This should make things safer and 
more uniform since all methods off one of these bottom most inherited 
methods will have the same lock name.


.	help fix remaining bugs.
.	write skeleton plugin files to outline required plugin interface and 
design (if plugin is to be included with zinf).



2.3.x
.	zinfvolume becomes member function of physicalmediaoutput.  Our output 
plugin then has conditionals at the get/set volume methods to check if 
we're using cooperative volume, setting a boolean flag and if it is it 
calls it's inherited pmo object's respective method which is the 
zinfvolume method.  The boolean flag is used for the zinfvolumize 
function instead of the slightly more time consuming pref call. This 
will have a few other nice sideeffects such as not having to touch 
outside code to have an audio output plugin without mixer controls of 
it's own.  not to mention being cleaner and more logical.

.	preferences become some form of vectored strings. Plugins gain two new 
methods. One is to retrieve prefrence variable names and identification 
info and the other is to retrieve default values and respective variable 
name.  Upon bootloading, zinf queries all plugins found in it's plugin 
dirs, ignoring duplicates, and asks what variable names it supports 
before starting anysubsystem. This returns a mapped vectored list of 
strings. zinf sends this to a new method in the prefs class that adds 
this to it's current list of variable names. Zinf then calls the default 
values method of that plugin. This gets sent to the pref class via a new 
method.  So now the pref class maintains two mapped vectors of strings. 
  once all the plugins have been scanned in the plugin dirs it has, it 
asks the pref class to reread the preference file, the pref class then 
works like it does currently and puts in defaults for any not found 
ignoring any it doesn't understand or have in it's current list.  New 
plugins added to zinf wont be recognized unless you restart zinf (this 
is reasonable).  Zinf then can work like it normally does with no 
changes to any other code.

.	The preference changes power of course is to let us change how the 
other code works because now we have much more flexibility.  Once done, 
redoing the options pane in the gtk ui is key to taking advantage of the 
plugin's settings and unlimited nature of the preference class.  Making 
other aspects of zinf able to determine if a plugin is loaded (which it 
would be able to do now) will be really cool to get done. Zinf will then 
be able to really live up to it's "extendible" description.

.	port xing's equalizer code to be incorporporated into the 
physicalmediaoutput class much like zinfvolume will be.  it should 
require little work to do this.  it's even got ASM code if we are 
building with nasm support.  All output plugins then will have the 
ability to use the equalizer / software volume by simply adding a 
conditional before writing data to their respective audio device api and 
executing the method by calling their pmo object directly.

.	if nobody has fixed the http code stuff by now, start doing that.

.	look into figuring out exactly which object is using the assload of 
ram that zinf uses.  If it's in the bitmap stuff, cry and wait until 
2.4. otherwise fix damn problem.


2.4.x
.	if assload of ram usage is the bitmap code, create gtk2 ui that uses 
no themes, stealing as much code from old gtk ui as possible dealing 
with the musicbrowser and such.  I want to use gtk2 in preparation for 
this ui to supercede the old one come 2.5


2.5
.	serialize pipeline.  (this may need to be done before if it is 
determined that we cant fix certain bugs without doing it.

	



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.