disable fflush in sci_printf only in webmode 45/21245/2
Antoine ELIAS [Wed, 22 Jan 2020 08:46:27 +0000 (09:46 +0100)]
Change-Id: I74a95e595d56dce51c4fa9ed2a0a376b08c7d6d6

scilab/modules/ast/includes/system_env/configvariable.hxx
scilab/modules/ast/includes/system_env/configvariable_interface.h
scilab/modules/ast/src/cpp/system_env/configvariable.cpp
scilab/modules/ast/src/cpp/system_env/configvariable_interface.cpp
scilab/modules/core/src/cpp/InitScilab.cpp
scilab/modules/gui/includes/InitializeGUI.h
scilab/modules/gui/src/cpp/InitializeGUI.cpp
scilab/modules/output_stream/sci_gateway/cpp/sci_mprintf.cpp

index 040a3ad..81be2ed 100644 (file)
@@ -530,6 +530,12 @@ public :
     static void resetRecursionLevel();
     static bool increaseRecursion();
     static void decreaseRecursion();
+private: 
+    static bool webMode;
+public:
+    static bool getWebMode();
+    static void setWebMode(bool);
+
 };
 
 #endif /* !__CONFIGVARIABLE_HXX__ */
index 6da2b86..0b52408 100644 (file)
@@ -87,4 +87,7 @@ EXTERN_AST void setExecutionBreak();
 EXTERN_AST void resetExecutionBreak();
 
 EXTERN_AST int setRecursionLimit(int);
+
+EXTERN_AST int getWebMode();
 #endif /* !__CONFIGVARIABLE_INTERFACE_H__ */
+
index 4bd03e0..89c746a 100644 (file)
@@ -1602,3 +1602,16 @@ void ConfigVariable::resetRecursionLevel()
 {
     recursionLevel = 0;
 }
+
+//webmode
+bool ConfigVariable::webMode = true;
+
+bool ConfigVariable::getWebMode()
+{
+    return webMode;
+}
+
+void ConfigVariable::setWebMode(bool _mode)
+{
+    webMode = _mode;
+}
index 41da8f0..bb38085 100644 (file)
@@ -265,3 +265,9 @@ int setRecursionLimit(int val)
 {
     return ConfigVariable::setRecursionLimit(val);
 }
+
+int getWebMode()
+{
+    return ConfigVariable::getWebMode() ? 1 : 0;
+}
+
index d3cfae7..3b132cc 100644 (file)
@@ -251,6 +251,8 @@ int StartScilabEngine(ScilabEngineInfo* _pSEI)
     createInnosetupMutex();
 #endif
 
+    ConfigVariable::setWebMode(_pSEI->iWebMode != 0);
+
     //open scope lvl 0 for gateway from modules and first variables ( SCI, HOME, TMPDIR, ...)
     symbol::Context::getInstance()->scope_begin();
 
@@ -273,7 +275,7 @@ int StartScilabEngine(ScilabEngineInfo* _pSEI)
     {
         InitializeTclTk();
         InitializeJVM();
-        InitializeGUI(_pSEI->iWebMode == 0 ? TRUE : FALSE);
+        InitializeGUI();
 
         /* create needed data structure if not already created */
         loadGraphicModule();
index 46b259b..88af486 100644 (file)
@@ -18,7 +18,7 @@
 #include "BOOL.h"
 #include "dynlib_gui.h"
 
-GUI_IMPEXP BOOL InitializeGUI(BOOL);
+GUI_IMPEXP BOOL InitializeGUI();
 
 #endif /* __INTIALIZEGUI_H__ */
 /*--------------------------------------------------------------------------*/
index fab212e..5d5309b 100644 (file)
@@ -25,7 +25,7 @@ extern "C"
 #endif
 }
 /*--------------------------------------------------------------------------*/
-BOOL InitializeGUI(BOOL swingView)
+BOOL InitializeGUI()
 {
     if (getScilabMode() == SCILAB_STD)
     {
@@ -36,10 +36,11 @@ BOOL InitializeGUI(BOOL swingView)
     }
     else
     {
-        if (swingView)
+        if (getWebMode() == 0)
         {
             org_scilab_modules_gui_bridge::CallScilabBridge::registerSwingView(getScilabJavaVM());
         }
+
         return TRUE;
     }
 
index da7c950..ac3a122 100644 (file)
@@ -21,6 +21,7 @@
 #include "function.hxx"
 #include "string.hxx"
 #include "overload.hxx"
+#include "configvariable.hxx"
 
 #include <iterator>
 
@@ -78,7 +79,11 @@ types::Callable::ReturnValue sci_mprintf(types::typed_list &in, int _iRetCount,
 
         scilabForcedWriteW(pwstOutput[i]);
 
-        // fflush(NULL);
+        if (ConfigVariable::getWebMode() == false)
+        {
+            fflush(NULL);
+        }
+
         FREE(pwstOutput[i]);
     }