The "problem" I mentioned won't be from the code itself. It will work just fine, insofar as it won't crash or puke or anything. But I don't know your requirements.
The (potential) problem comes from this: Suppose the DAQ posts new data every 1000 mSec. Suppose each window replots every 1000 mSec. Unless you synchronize things, you have the potential for one window to show data from the latest DAQ operation, and another to show data from the time before. In other words, the execution order might go: 1... Window A replots from Data Source. 2... Main updates Data Source with new data. 3... Window B replots from Data Source. So the data shown in window A was not taken at the same time as the data shown in window B. Whether that's a problem in your situation or not - I can't say. I have a solution, if you need it. Guess what? It involves occurrences !
