> On Jun 7, 2015, at 9:53 AM, Phil Rosenberg <p.d.rosenb...@gmail.com> wrote: > > The eop call is required because there is some code in bop that needs > to be called, but if bop is called before eop then that function just > returns. > > I am sure that you will find the same thing for the Windows driver too. >
The extra plP_eop() causes problems on the new wingdi driver that I wrote. Nothing insurmountable, but I will dig around for a solution that also fixes the multiple keypress bug. > To be honest I was recently thinking that the buffer is fast > approaching a rather uncomfortable midway point between either > representing only graphics operation or representing pllot commands. > This comes from the fact that drivers also sit in this uncomfortable > midway point. A good example is the clear operation. The clear > operation should clear the subpage, but that requires the driver to > know the subpage geometry so instead of the driver receiving the > graphics operation of "fill this rectangle with the background colour) > it is left for the drivers to fish that geometry from the stream. I > can understand why this is done because some drivers may be able to > actually clear regions rather than just draw a box. > > For now I think we just have to live with it and work the buffer as > best we can, in this uncomfortable zone. But in the long term I would > suggest that the drivers should not be given access to the stream. > This will put them solidly in the graphics device region and make the > buffer way simpler. > I agree. In the new wingdi I tried to minimize the use of the stream. > But at the same time we have plenty of other stuff to do so I don't > think this is anything like a priority at the moment. > > Phil > > On 7 June 2015 at 05:25, Jim Dishaw <j...@dishaw.org> wrote: >> While working on my old Windows GDI based driver (see attached patches), I >> stumbled across the problem that prompted Phil to add plP_eop() in >> plRemakePlot(). This is related to the issue that Andrew raised on 3/29 on >> problems with -np when running automated testing. >> >> In plbuf.c, the EOP is never inserted into the plot buffer while the plot is >> being generated. The obvious issue to having an EOP in the plot buffer is >> that it would trigger the device EOP handler (e.g. plD_eop_xw) and in a GUI >> driver that could cause problems (i.e. the WaitForPage() in the xwin driver >> would be called multiple times). While working on wxwidgets, Phil added a >> call to plP_eop() in the plRemakePlot() function in plbuf.c, which triggers >> the EOP handler and results in the need for a keypress. I thought >> eliminating the call to plP_eop() would be the simple fix (it does fix the >> bug) but having the EOP is handy when redrawing the plot. >> >> I looked at the possibility of keeping the EOP in the plot buffer, but there >> is all sorts of messy code on trying to “do the right thing” that I think >> might cause more problems. In the ideal world, I like the symmetry of >> having both a BOP and EOP in the plot buffer. However, to support that >> correctly in the GUI drivers might be tricky. Instead, I think the best >> solution is to eliminate the plP_eop() call that was added into >> plRemakePlot. That will fix the issue that Andrew raised. The downside is >> that Phil might need to make some changes to wxwidgets. It took some effort >> to get the new windows GDI driver working without the plP_eop() call, but it >> does work. I can make a fix for plbuf.c that removes the plP_eop(). >> >> @Aaron & Alan (and others who might be interested) >> I have attached two sets of patches. One fixes some build problems I was >> having with MSVC and the second implements the new windows GDI driver (which >> is mostly done). I need to add some features that I had in my old driver >> (coordinate point picking, optional tab interface, saving plots into files, >> optional menu bar). Should I add Freetype back in? >> >> Once I finish with wingdi, I will implement the Direct2D version. >> >> >> @Alan >> >> I was not able to uncrustify. I have not had time to set it up on my >> Windows machine. Sorry. >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Plplot-devel mailing list >> Plplot-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/plplot-devel >> ------------------------------------------------------------------------------ _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel