Hi Alan, Phil I forgot about a very simple fix that does need a custom function call (therefore a "real" fix, or better a non intrusive fix for users)
that is, right now, the code is responding to these 2 events WXWINDOW::Connect( wxEVT_SIZE, wxSizeEventHandler( wxPLplotwindow<WXWINDOW>::OnSize ) ); WXWINDOW::Connect( wxEVT_PAINT, wxPaintEventHandler( wxPLplotwindow<WXWINDOW>::OnPaint ) ); so, it's just a matter of calling the OnCreate() stream on one wxEVT_SIZE is a bad idea, because it's only called when the user moves the window but I think wxEVT_PAINT is *continuously* called in a event loop (meaning always) right now it even has some calls that are called there as a workaround template<class WXWINDOW> void wxPLplotwindow<WXWINDOW>::OnPaint( wxPaintEvent &WXUNUSED( event ) ) { //Really this should be in the constructor, but it caused a segfault //on at least one system (CentOS with intel compiler and wxWidgets 2.8.12). //Moving it here after WXWINDOW::Create has been called stops this and //the call does nothing if the style is the same as previous calls so //should be safe to call here. the boolean flag if ( !m_created ) { //create the stream makes it that it's only called 1 time I'll try this tomorrow -Pedro ----- Original Message ----- From: "Pedro Vicente" <pedro.vice...@space-research.org> To: "Alan W. Irwin" <ir...@beluga.phys.uvic.ca>; "Phil Rosenberg" <p.d.rosenb...@gmail.com> Cc: "PLplot development list" <plplot-devel@lists.sourceforge.net> Sent: Thursday, December 15, 2016 1:31 AM Subject: Re: [Plplot-devel] wxPLplotDemo.cpp -- linux build error > Hi Alan > >> I think you will agree with me that smells like a workaround rather >> than a fundamental fix. > > yes, I agree. > >>> Eventually, we had to change our >>> minimum acceptable wxwidgets version from 2.8 to 3.0 because of one >>> commit which only worked for 3.0. > > hhm, ok > I have to double check this but the comments in your code say ::Bind() is > only available > for 3.0, and ::Bind() is not used > > so probably the code as of now is compatible with 2.8 (meaning it only has > 2.8 calls, not 3.0 calls) > > >>>I would appreciate >>> your thoughts on this matter of moving to pure 3.0. > > we could try the ::Bind() route, yes, to see what happens > > another thing > wxPLplotwindow.h is a header file > we can try to move the implementation to a .ccp file (with templates there > are some idiosyncrasies about the use of headers versus .cpp, > that's why I never use templates) > > >>>I would be willing to hold the release for you for a few >>> extra days beyond December 27th > > that would be great, that should be enough to have a better idea. > I have more time to work on this on the weekends only. > > -Pedro > > > ----- Original Message ----- > From: "Alan W. Irwin" <ir...@beluga.phys.uvic.ca> > To: "Pedro Vicente" <pedro.vice...@space-research.org>; "Phil Rosenberg" > <p.d.rosenb...@gmail.com> > Cc: "PLplot development list" <plplot-devel@lists.sourceforge.net> > Sent: Thursday, December 15, 2016 12:35 AM > Subject: Re: [Plplot-devel] wxPLplotDemo.cpp -- linux build error > > >> On 2016-12-14 22:30-0500 Pedro Vicente wrote: >> >>> Hi Alan >>> >>> see my replies between your questions >>> >>>> This certainly qualifies as a release-critical wxwidgets bug. And you >>>> have certainly supplied enough information that Phil should find this >>>> to be straightforward to reproduce. >>> >>> easy to reproduce on the PLplot code, but not immediatley obvious to >>> find >>> the root cause. >> >> Amen! >> >>> >>> My speculation is that it happens because this function located in >>> \bindings\wxwidgets\wxPLplotwindow.h >>> >>> void wxPLplotwindow<WXWINDOW>::OnCreate( wxWindowCreateEvent &event ) >>> { >>> if ( !m_created ) >>> >>> is not automatically called in an wxwidgets event triggered by this code >>> in wxPLplotDemo.cpp, the Create() call >>> >>> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>(); >>> frame->Create( NULL, wxID_ANY, wxT( "wxPLplotDemo" ) ); >>> >>> this can be easily confirmed if you put a print statement here >>> >>> void wxPLplotwindow<WXWINDOW>::OnCreate( wxWindowCreateEvent &event ) >>> { >>> wxLogDebug("wxPLplotwindow<WXWINDOW>::OnCreate"); >>> if ( !m_created ) >>> >>> so, my solution is simple, it's just to specifically call the code that >>> is inside >>> void wxPLplotwindow<WXWINDOW>::OnCreate >>> >>> >>> I did this by doing a function that I called CreatePLplotstream(), that >>> contains the stream initialization code >>> that is in >>> wxPLplotwindow<WXWINDOW>::OnCreate >>> >>> >>> so, in the demo code the call is now >>> >>> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>(); >>> frame->Create( NULL, wxID_ANY, wxT( "wxPLplotDemo" ) ); >>> frame->CreatePLplotstream(); >> >> I think you will agree with me that smells like a workaround rather >> than a fundamental fix. Nevertheless, if you turn that change into a >> PLplot patch AND that solves the present build issue for all the Linux >> distros you have tried, and if it works here on Debian Jessie, then I >> will apply that patch as a temporary fix for the release which we can >> undo afterwards (or even before the release if we are lucky) with a >> more fundamental fix. >> >>> >>>> Do you see any use of (presumably deprecated) wxwidgets-2.x calls >>>> in our wxwidgets binding or device driver? If so, that might be >>>> a good place to start to work on this issue. >>> >>> >>> not sure, I'll check >>> >>> events are explained here >>> >>> http://docs.wxwidgets.org/3.1/overview_events.html >>> >>> I always do a static event table in my code. >>> it's also possible to do a dynamic event (with ::Bind()) >>> actually in the PLplot code this is done another way, that I am not sure >>> about >>> >>> //We use connect instead of Bind for compatiblity with wxWidgets 2.8 >>> //but should move to bind in the future. >>> WXWINDOW::Connect( wxEVT_CREATE, wxWindowCreateEventHandler( >>> wxPLplotwindow<WXWINDOW>::OnCreate ) ); >> >> Implementing a fundamental fix for the current build issue is already >> way beyond my meager C++ and wxwidgets expertise, but I do have some >> sense of the overview that may help you. >> >> One issue you should be aware of is git blame results are obfuscated >> by our code styling events (often triggered by me) which amount to >> putting random blanks in the code to make it conform to our style. >> >> So >> >> software@raven> git blame bindings/wxwidgets/wxPLplotwindow.h |grep >> '2\.8' >> 39a6c01b (Alan W. Irwin 2015-02-14 19:32:12 -0800 90) //We use >> connect instead of Bind for compatiblity with wxWidgets 2.8 >> 39a6c01b (Alan W. Irwin 2015-02-14 19:32:12 -0800 123) //on at least >> one system (CentOS with intel compiler and wxWidgets 2.8.12). >> >> "shows" I was the author of the above comment in commit 39a6c01b, but >> that was a styling commit so you have to back off one commit to 39a6c01b^ >> to find the true >> author/commit which then shows the following: >> >> software@raven> git blame 39a6c01b^ bindings/wxwidgets/wxPLplotwindow.h >> |grep '2\.8' >> cf59c54a (Phil Rosenberg 2015-01-15 14:18:42 +0000 75) //We use >> connect instead of Bind for compatiblity with wxWidgets 2.8 >> fa121bd5 (Phil Rosenberg 2015-01-20 15:56:53 +0000 102) //on at >> least one system (CentOS with intel compiler and wxWidgets 2.8.12). >> >> Also, if you look at the git log for references to wxwidgets 2.8 and >> 3.0, it appears we tried to keep backwards compatibility with 2.8 for >> quite a while (the commit messages for cf59c54a, and fa121bd5 but also >> other commits mention maintaining compatibility with 2.8) even though >> principal development was on 3.0. Eventually, we had to change our >> minimum acceptable wxwidgets version from 2.8 to 3.0 because of one >> commit which only worked for 3.0. So it does appear our code is a >> mixture of wxwidgets-2.8 (supported typically by an extra commit after >> some development on 3.0) and 3.0, and it might be a bit of an effort >> to remove all that wxwidgets-2.8 support. >> >> @Phil: >> >> If you are in e-mail contact, i.e., reading this, I would appreciate >> your thoughts on this matter of moving to pure 3.0. If it is >> straightforward to do, and you have time to work on that before >> Christmas, I would be willing to hold the release for you for a few >> extra days beyond December 27th until you are done and the result >> thoroughly checked on Debian Jessie, Windows, and all the different >> Linux distros available to Pedro. I advise this change eventually in >> any case because the mixture of 2.8 and 3.0 we have now appears not to >> be well supported on most Linux distros unless Pedro's workaround >> turns out to (temporarily) save the day for us. >> >> 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 >> __________________________ >> > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Plplot-devel mailing list > Plplot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/plplot-devel > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel