From: Alan W. I. <ir...@be...> - 2017-10-02 22:30:51
|
On 2017-10-02 16:10+0100 Phil Rosenberg wrote: > Hi Alan > I've been going through the various wxWidgets bugs on the bug tracker. > The ones that remain are the rather more technical ones or the ones > that I'm not sure what the correct behaviour should be. > > In particular the slave display thing is a bit of a puzzle to me. > Searching for slave in the documentation doesn't yield any results and > all I see in example 14 is two streams used, the second of which has > had plspause( 0 ) called on it. Is that what sets up a slave display. > If so it really needs some documentation indicating what triggers a > slave display and how they should work. To Phil, Maurice, Hazen, Hez, and Andrew: @Phil: I don't understand the details about exactly what plspause does, but it does depend on an implementation in each individual interactive device driver so you are going to have to read the plspause parts of the source code for one or more other devices to make further progress on this bug. However, to help you to choose what to look at I did some further experiments. For the new wxwidgets device I still get the same incorrect behaviour as reported in the bug report. That is, the slave plot GUI first displays a blank plot rather than the actual slave plot and then immediately dies. Meanwhile, the primary plot GUI displays fine, and moves to the second page and exits if the user hit the enter key twice. This result is the same both for -DPL_WXWIDGETS_IPC3=ON and OFF. For the old wxwidgets device (-DOLD_WXWIDGETS=ON) the behaviour is exactly the same as -dev xwin. That is both primary and secondary master and slave GUI's display their respective plots, and if you hit the enter key on either of those two GUI's, BOTH plots advance a page (which is actually also incorrect behaviour, but at least you don't have the "blank page and die" behaviour for the slave that you get with new wxwidgets). So the xwin and old wxwidgets models are not quite the best ones to follow here for master/slave behaviour. And I suspect that is also true of -dev wingcc and -dev wingdi because I think they modelled their plspause on -dev xwin. But you should double-check that. Instead, you should be attempting to implement the same behaviour as demonstrated by any of the tk, qtwidget and xcairo devices; both master and slave GUI plots are displayed, but the enter key is a no-op for the slave GUI, and only for the master GUI does the enter key advance the pages for both GUI's and eventually exit the example. In sum, I suggest you look carefully at the old wxwidgets device code to solve the "blank plot and die" issue with the slave plot for new wxwidgets. Once that bug is solved, then I would follow exactly however either of our qtwidget or xcairo devices implement plspause to obtain the correct master/slave behaviour. I am not suggesting you attempt to understand plspause parts of the -dev tk code because that device driver logic is tough to follow in my opinion. But it is interesting that although the -dev tk logic uses important parts of the -dev xwin code it gets the master/slave behaviour correct while pure -dev xwin code does not achieve that. @Maurice: I believe plspause was implemented by you long ago and presumably tested by you on the interactive devices available to you (i.e, -dev xwin and -dev tk since our cairo and qt device drivers hadn't been implemented back then). I would appreciate you commenting further and especially about the differences between master/slave behaviour between -dev xwin and the closely related -dev tk. @Hazen, Hez, and Andrew: It is very likely that one of you made the master/slave relationship work so well for xcairo and/or qtwidget. If so I would appreciate you commenting further. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |