From: Tim M. <or...@le...> - 2013-02-12 12:25:26
|
D. Michael McIntyre wrote: > On 02/11/2013 03:06 PM, Tim Munro wrote: > >> > and remove submaster busses without resorting to copying. >> > >> > The Studio class already contained an addBuss() function, and now it also >> > contains a removeBuss() function. > That looks like it should be a safer way of removing the old bus. > > Just looking at this and having only a very vague understanding of > what's going on, I wonder if this latest version doesn't wipe out > whatever was on the original set of busses when you've added or > subtracted one. Isn't it just wiping the slate clean and producing a > new slate of whatever the desired size is? No, my priority was to preserve the content of the original busses wherever possible. That was also the intent of the original code. Expanding the number of submasters now involves padding m_busses (in Studio) with empty busses until the desired size is reached. Shrinking the number of submasters involves removing existing busses from the end of m_busses until the desired size is reached. The original content of m_busses is left undisturbed wherever possible. The original code would take a snapshot of m_busses, blow away the contents of m_busses, and then repack it with new busses. These new busses would be either empties or duplicates of the originals, as needed. Where the original code got into trouble was when it tried to duplicate existing busses containing plugins. My first plan involved simply upgrading the copy ctor so that the code could proceed as intended. But Ted wisely pointed out that this approach was fraught with danger, so chose a different method. Tim Munro |