|
From: Tatsuro M. <tma...@ya...> - 2017-03-21 06:50:30
|
----- Original Message -----
> From: Tatsuro MATSUOKA >
To: tmacchant3 Merritt Ethan ; gnuplot-beta bmaerkisch
> Cc:
> Date: 2017/3/21, Tue 13:08
> Subject: qt terminal trouble 5.0.6 source on windows build (was Re: Release 5.0.6)
>
>
>
[snip]
>> I have tried to build gnuplot 5.0.6 on windows.
>> However, gnuplot_qt process fails to start
>>
>> For starting qt terminal
>>
>> gnuplot> set term qt
>> gnuplot> plot x
>>
>> Warning: slow font initializationgnuplot>
>>
>> Seeing task (process) manager on windows 10, I cannot see gnuplot_qt.exe.
>> This does not happens on gnuplot-5.0.6pre and 5.1 (2017-03-19).
>>
>> I have tried both my original build dependency and msys2 dependency.
>> But results are the same
>>
>> @Bastian
>>
>> Did you see the similar phenomenon?
>>
>> Tatsuro
>
> I checked changes after pre-release of 5.0.6 and found that
> the change
>
>
> 2017-03-08 Ethan A Merritt <merritt@u.washington.edu>
>
> * src/qtterminal/QtGnuplotEvent.h: Move new enum GEPID (2017-02-25) to
> end of enum list rather than in the middle. Otherwise the gnuplot_qt
> built for 5.0.6 is incompatible with gnuplot executables 5.0.0-5, which
> makes comparison of multiple versions to debug things harder than it
> needs to be. If the new event is at the end, all earlier gnuplot 5.0.x
> versions can share gnuplot_qt 5.0.6.
>
> prevents gnuplot_qt.exe to start on windows.
>
> I do not have enough knowledge so that I do not know why this change causes
> trouble on qt terminal for windows.
>
> Tatsuro
I have executed gdb trace.
gnuplot_qt starts but terminates at start_plot
Thread 1 hit Breakpoint 1, execGnuplotQt ()
at ../../src/qtterminal/qt_term.cpp:229
229 QString filename;
(gdb) n
230 char* path = getenv("GNUPLOT_DRIVER_DIR");
(gdb) n
231 if (path)
(gdb) n
233 if (filename.isEmpty()) {
(gdb) n
235 filename = QCoreApplication::applicationDirPath();
(gdb) n
241 filename += "/";
(gdb) n
242 filename += GNUPLOT_QT;
(gdb) n
245 qt->gnuplot_qtStarted = QProcess::startDetached(filename, QStringList(), QString(), &pid);
(gdb) n
246 if (qt->gnuplot_qtStarted) {
Here gnuplot_qt started
(gdb) n
247 qt->localServerName = "qtgnuplot" + QString::number(pid);
(gdb) n
250 qt->pid = pid;
(gdb) n
229 QString filename;
(gdb) n
255 }
(gdb) n
qt_init () at ../../src/qtterminal/qt_term.cpp:440
440 setlocale(LC_NUMERIC, "C");
(gdb) n
441 setlocale(LC_TIME, current_locale);
(gdb) n
444 qt->out.setVersion(QDataStream::Qt_4_4);
(gdb) n
445 term_interlock = (void *)qt_init;
(gdb) n
446 gp_atexit(qt_atexit);
(gdb) n
447 }
(gdb) n
term_initialise () at ../../src/term.c:502
502 term_initialised = TRUE;
(gdb) n
504 }
(gdb) n
[New Thread 8800.0x10f4]
do_plot (plots=0x4ca54b0, pcount=1) at ../../src/graphics.c:523
523 term_start_plot();
(gdb) n
Here gnuplot_qt terminates.
I dig into term_start_plot(); by step command.
523 term_start_plot();
(gdb) s
term_start_plot () at ../../src/term.c:512
512 if (!term_initialised)
(gdb) s
515 if (!term_graphics) {
(gdb) s
517 (*term->graphics) ();
(gdb) s
qt_graphics () at ../../src/qtterminal/qt_term.cpp:514
514 ensureOptionsCreated();
(gdb) n
515 qt->out << GEDesactivate;
(gdb) n
516 qt_flushOutBuffer();
(gdb) n
517 qt_connectToServer();
(gdb) n
520 if (!(qt->codec = qt_encodingToCodec(encoding)))
(gdb) n
524 qt->currentFontSize = qt_optionFontSize;
(gdb) n
525 qt->currentFontName = qt_option->FontName;
(gdb) n
528 if (qt_setSize)
(gdb) n
530 term->xmax = qt_oversampling*qt_setWidth;
(gdb) n
531 term->ymax = qt_oversampling*qt_setHeight;
(gdb) n
532 qt_setSize = false;
(gdb) n
536 qt->out << GESetCurrentWindow << qt_optionWindowId;
(gdb) n
537 qt->out << GEInitWindow;
(gdb) n
540 qt->out << GEPID << quint32(GetCurrentProcessId());
(gdb) n
542 qt->out << GEActivate;
(gdb) n
543 qt->out << GETitle << qt_option->Title;
(gdb) n
544 qt->out << GESetCtrl << qt_optionCtrl;
(gdb) n
545 qt->out << GESetWidgetSize << QSize(term->xmax, term->ymax)/qt_oversampling;
(gdb) n
547 qt->out << GESetSceneSize << QSize(term->xmax, term->ymax)/qt_oversampling;
(gdb) n
548 qt->out << GEClear;
(gdb) n
550 qt_sendFont();
(gdb) n
Here gnuplot_qt terminates.
Perhaps
"Move new enum GEPID (2017-02-25) to end of enum list rather than in the middle"
affects the gnuplot_qt execution on windows but I cannot give fix for this issue.
But this is a serious bug of gnuplot for windows and should be corrected.
Tatsuro
|