From c35e2d666b44988eb6c90637a52a7e04fea23fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Tue, 19 Feb 2019 11:24:55 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@759 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- PIPMacros.cmake | 2 +- src_main/io_utils/pibasetransfer.cpp | 3 --- src_main/io_utils/pidiagnostics.cpp | 10 ++++----- src_main/thread/pithread.cpp | 31 ++++++++++++++++++++++++++-- utils/resources_compiler/main.cpp | 4 ++++ 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/PIPMacros.cmake b/PIPMacros.cmake index 58f7762d..5284fec1 100644 --- a/PIPMacros.cmake +++ b/PIPMacros.cmake @@ -94,7 +94,7 @@ macro(pip_resources RESULT INPUT) #message("RC_DEPS: ${RC_DEPS}") add_custom_command(OUTPUT ${RC_OUT} COMMAND ${PIP_RC} - ARGS -i ${RC_FILES} -o ${RC_OUT} -n ${SRC_RC_OUT} + ARGS -s -i ${RC_FILES} -o ${RC_OUT} -n ${SRC_RC_OUT} DEPENDS ${RC_DEPS} WORKING_DIRECTORY ${PIP_DLL_DIR} COMMENT "Generating ${RC_FILE}" diff --git a/src_main/io_utils/pibasetransfer.cpp b/src_main/io_utils/pibasetransfer.cpp index c04fab37..3ac42ae1 100644 --- a/src_main/io_utils/pibasetransfer.cpp +++ b/src_main/io_utils/pibasetransfer.cpp @@ -26,14 +26,11 @@ PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) { setPacketSize(4096); #endif randomize(); - piCout << "PIBaseTransfer" << &diag; } PIBaseTransfer::~PIBaseTransfer() { - piCout << "~PIBaseTransfer" << &diag; diag.stop(); - piCout << "~PIBaseTransfer done"; break_ = true; } diff --git a/src_main/io_utils/pidiagnostics.cpp b/src_main/io_utils/pidiagnostics.cpp index f6113c87..aeee4266 100644 --- a/src_main/io_utils/pidiagnostics.cpp +++ b/src_main/io_utils/pidiagnostics.cpp @@ -60,19 +60,19 @@ PIDiagnostics::State::State() { PIDiagnostics::PIDiagnostics(bool start_): PITimer(/*PITimer::Pool*/) { disconn_ = 0.; - piCout << "PIDiagnostics construct"; + //piCout << "PIDiagnostics construct"; setInterval(500); reset(); setDisconnectTimeout(3.); changeDisconnectTimeout(3.); if (start_) PITimer::start(500); - piCout << "PIDiagnostics construct done"; + //piCout << "PIDiagnostics construct done"; } PIDiagnostics::~PIDiagnostics() { - piCout << "~PIDiagnostics start..."; - PITimer::stop(); - piCout << "~PIDiagnostics done!"; + //piCout << "~PIDiagnostics start..."; + //PITimer::stop(); + //piCout << "~PIDiagnostics done!"; } diff --git a/src_main/thread/pithread.cpp b/src_main/thread/pithread.cpp index dfb9e44c..23d16ea6 100755 --- a/src_main/thread/pithread.cpp +++ b/src_main/thread/pithread.cpp @@ -393,17 +393,44 @@ void PIThread::setPriority(PIThread::Priority prior) { } +#ifdef WINDOWS +bool isExists(HANDLE hThread) { + //errorClear(); + //piCout << "isExists" << hThread; + DWORD dw = 0; + GetExitCodeThread(hThread, &dw); + //piCout << ret << dw << errorString(); + if (dw == STILL_ACTIVE) return true; + //piCout << errorString(); + return false; +} +#endif + bool PIThread::waitForFinish(int timeout_msecs) { //PICout(PICoutManipulators::DefaultControls) << "thread" << this << "PIThread::waitForFinish" << running_ << terminating << timeout_msecs; if (!running_) return true; if (timeout_msecs < 0) { - while (running_) + while (running_) { msleep(PIP_MIN_MSLEEP); +#ifdef WINDOWS + if (!isExists(PRIVATE->thread)) { + unlock(); + return true; + } +#endif + } return true; } tmf_.reset(); - while (running_ && tmf_.elapsed_m() < timeout_msecs) + while (running_ && tmf_.elapsed_m() < timeout_msecs) { msleep(PIP_MIN_MSLEEP); +#ifdef WINDOWS + if (!isExists(PRIVATE->thread)) { + unlock(); + return true; + } +#endif + } return tmf_.elapsed_m() < timeout_msecs; } diff --git a/utils/resources_compiler/main.cpp b/utils/resources_compiler/main.cpp index e8894dd8..d0afce75 100644 --- a/utils/resources_compiler/main.cpp +++ b/utils/resources_compiler/main.cpp @@ -15,6 +15,7 @@ void usage() { piCout << "-i --input " << Green << "- resources description file"; piCout << "-o --out " << Green << "- output .cpp file"; piCout << "-l --list " << Green << "- print readed files from description and exit"; + piCout << "-s --silent " << Green << "- no console output"; } @@ -25,7 +26,10 @@ int main (int argc, char * argv[]) { cli.addArgument("name", true); cli.addArgument("help"); cli.addArgument("list"); + cli.addArgument("silent"); + if (cli.hasArgument("silent")) + piDebug = false; if (cli.hasArgument("help") || !cli.hasArgument("input") || (!cli.hasArgument("out") && !cli.hasArgument("list"))) { usage();