#include <IVtkDraw_HighlightAndSelectionPipeline.hxx>
#include <IVtkDraw_Interactor.hxx>
-// prevent disabling some MSVC warning messages by VTK headers
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4244)
-#endif
+// prevent disabling some MSVC warning messages by VTK headers
+#include <Standard_WarningsDisable.hxx>
#include <vtkAlgorithmOutput.h>
#include <vtkAppendPolyData.h>
#include <vtkBMPWriter.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkTIFFWriter.h>
+#include <vtkTimerLog.h>
#include <vtkWindowToImageFilter.h>
#ifndef _WIN32
#include <X11/X.h>
#include <X11/Xutil.h>
#include <tk.h>
#endif
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
+#include <Standard_WarningsRestore.hxx>
// workaround name conflicts with OCCT methods (in class TopoDS_Shape for example)
#ifdef Convex
return 0;
}
+//================================================================
+// Function : VtkTimerLog
+// Purpose :
+//================================================================
+static Standard_Integer VtkTimerLog (Draw_Interpretor& ,
+ Standard_Integer theNbArgs,
+ const char** theArgVec)
+{
+ TCollection_AsciiString aVal;
+ if (theNbArgs == 2)
+ {
+ aVal = theArgVec[1];
+ aVal.LowerCase();
+ }
+ if (aVal == "1"
+ || aVal == "on")
+ {
+ vtkTimerLog::LoggingOn();
+ }
+ else if (aVal == "0"
+ || aVal == "off")
+ {
+ vtkTimerLog::LoggingOff();
+ }
+ else
+ {
+ std::cout << "Syntax error: wrong arguments\n";
+ return 1;
+ }
+ return 0;
+}
//================================================================
// Function : CreateActor
"\n\t\t: Creates the Vtk window",
__FILE__, VtkInit, group);
+ theCommands.Add("ivtktimerlog",
+ "ivtktimerlog {on|off}\n"
+ "\n\t\t: Enables/disables VTK timer profiler",
+ __FILE__, VtkTimerLog, group);
+
theCommands.Add("ivtkdisplay",
"ivtkdisplay usage:\n"
"ivtkdisplay name1 name2 ..."
__FILE__, VtkBackgroundColor, group);
}
-
//================================================================
// Function : Factory
// Purpose :
-puts "For OCC27871: Possible memory leak in viewers in virtual windows mode"
-puts "For OCC27871: Use 120 kb tolerance for checktrend because of leak on Linux in virtual windows mode"
puts "============"
-puts "OCC27567"
+puts "0027567: Visualization - possible memory leaks due to use of plain pointers in IVTK"
puts "============"
puts ""
-#######################################################################
-# Visualization - possible memory leaks due to use of plain pointers
-# in IVTK
-#######################################################################
-ivtkinit
+psphere s 10 15 80
+box b1 5 5 -5
+box b2 -5 -5 -5
+ptorus t 10 3
+compound s b1 b2 t cc
+unset s
+unset b1
+unset b2
+unset t
+incmesh cc 1
+ivtkinit
+ivtktimerlog 0
dlog off
-# Create i_max number of shapes
-set i_max 15
-
-set listmem {}
-for {set i 1} {${i} <= ${i_max}} {incr i} {
-
- psphere s 10 15 80
- box box1 5 5 -5
- box box2 -5 -5 -5
- ptorus t 10 3
-
- compound s box1 box2 t b$i
-
- unset s
- unset box1
- unset box2
- unset t
-
- # Display the j-th shape
- ivtkdisplay b$i
-
- # Display shaded
+proc doCycle { theI } {
+ # display shaded/wireframe
+ ivtkdisplay cc
ivtksetdispmode 1
-
- # Display wired
ivtksetdispmode 0
-
- # Select the shape
+
+ # select/unselect
ivtkselect 200 200
-
- # Deselect the shape
ivtkselect 0 0
-
- # Highlight the shape
+
+ # highlight/unhighlight
ivtkmoveto 200 200
-
- # Unhighlight the shape
ivtkmoveto 50 50
-
- # Hide the shape
- ivtkerase b$i
-
- # Remove the shape presentation from memory
- ivtkremove b$i
-
- unset b$i
- lappend listmem [meminfo h]
- checktrend $listmem 0 120000 "Memory leak detected"
+ # hide and remove
+ ivtkerase cc
+ ivtkremove cc
}
+# Create i_max number of shapes
+set i_max 15
+set listmem {}
+for {set i 1} {${i} <= ${i_max}} {incr i} {
+ doCycle $i
+ lappend listmem [meminfo h]
+ checktrend $listmem 0 1 "Memory leak detected"
+}