>>> I forgot about a very simple fix that does need a custom function call
I meant does NOT need a custom function call ----- 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:57 AM Subject: Re: [Plplot-devel] wxPLplotDemo.cpp -- linux build error > 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 > ------------------------------------------------------------------------------ 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