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

Reply via email to