Forking on github and submitting pull requests is probably the easiest method.
Ok, on to the issue: so an important question here and one that I have not answered myself is this: Should notes in the process of being moved/dragged affect the playback? That is, should the current position of the notes be 'visible' to the playhead? Currently, they are. Whether that's good or bad is up for debate. However, if the notes *weren't* active when being moved, then that opens up lots of opportunities for optimization. For one thing, the notes could be drawn into an image surface which is then overlaid onto the canvas, making drawing very fast (but perhaps being a bit confusing depending on the pattern's compaction mode, key, etc.) There's not much point in optimizing the particulars until decisions like this have been made. On Sun, Dec 1, 2013 at 1:14 PM, Element Green <[email protected]>wrote: > Hello Jonathan and community, > > I'm working on the performance issue I describe in my previous email with > note operations in the Non Sequencer (dragging a note duration or changing > velocity). > > Attached is a patch I created which addresses some optimization > opportunities. Let me know if there is a more preferred way to send > patches and I'll use that in the future. > > Patch details: > I added some tests to check if velocity or note duration actually changed > and only call damage_grid() if so. Also I merged the 2 calls to > damage_grid (before and after duration change) to just include the larger > of the 2 duration areas (only needed for duration change). Also processed > only gets set to 2 in the event a change is made, cutting down on an > additional damage() call in many cases. > > This cuts down on a lot of excessive redraws, which makes it more usable > on my system. However the performance is still extremely poor. I noticed > in the console that draw_background() is getting called a lot, for the > entire window, which leads me to believe, that despite damage_grid() > specifying a subset region, some underlying widgets are not utilizing this > and are just redrawing the entire area. I suspect this might be an > optimization opportunity with the Fl_Panzoomer widget. Does that sound > about right? Should widgets use the underlying Fl_X->region to limit > updates? > > Going beyond all that, I suspect there are some rather poor performing > OpenGL related stuff with my ATI/AMD graphics drivers. Most of the other > Non applications seem to perform pretty well though. Any tips on any areas > that could use optimization would be most appreciated. I've got a lot more > learning to do in regards to NTK, as far as the whole rendering pipeline, > so if my questions seem a bit excessive, I would totally understand. My > goal is to make things easier for you and ultimately end up with a more > functional Non Sequencer :-) > > Best regards, > > Element > >
