Memory statistics (total memory, memory usage, Undo / Redo stack size)
into the System INfo dialog.
This commit is contained in:
parent
f1f6fe5fb5
commit
2de6d95322
@ -4564,15 +4564,9 @@ bool Plater::can_copy_to_clipboard() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Plater::can_undo() const
|
bool Plater::can_undo() const { return p->undo_redo_stack.has_undo_snapshot(); }
|
||||||
{
|
bool Plater::can_redo() const { return p->undo_redo_stack.has_redo_snapshot(); }
|
||||||
return p->undo_redo_stack.has_undo_snapshot();
|
const UndoRedo::Stack& Plater::undo_redo_stack() const { return p->undo_redo_stack; }
|
||||||
}
|
|
||||||
|
|
||||||
bool Plater::can_redo() const
|
|
||||||
{
|
|
||||||
return p->undo_redo_stack.has_redo_snapshot();
|
|
||||||
}
|
|
||||||
|
|
||||||
SuppressBackgroundProcessingUpdate::SuppressBackgroundProcessingUpdate() :
|
SuppressBackgroundProcessingUpdate::SuppressBackgroundProcessingUpdate() :
|
||||||
m_was_running(wxGetApp().plater()->is_background_process_running())
|
m_was_running(wxGetApp().plater()->is_background_process_running())
|
||||||
|
@ -27,6 +27,11 @@ class ModelObject;
|
|||||||
class Print;
|
class Print;
|
||||||
class SLAPrint;
|
class SLAPrint;
|
||||||
|
|
||||||
|
namespace UndoRedo {
|
||||||
|
class Stack;
|
||||||
|
struct Snapshot;
|
||||||
|
};
|
||||||
|
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
class MainFrame;
|
class MainFrame;
|
||||||
@ -191,6 +196,7 @@ public:
|
|||||||
void undo_to(int selection);
|
void undo_to(int selection);
|
||||||
void redo_to(int selection);
|
void redo_to(int selection);
|
||||||
bool undo_redo_string_getter(const bool is_undo, int idx, const char** out_text);
|
bool undo_redo_string_getter(const bool is_undo, int idx, const char** out_text);
|
||||||
|
const Slic3r::UndoRedo::Stack& undo_redo_stack() const;
|
||||||
|
|
||||||
void on_extruders_change(int extruders_count);
|
void on_extruders_change(int extruders_count);
|
||||||
void on_config_change(const DynamicPrintConfig &config);
|
void on_config_change(const DynamicPrintConfig &config);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
#include "3DScene.hpp"
|
#include "3DScene.hpp"
|
||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
|
#include "../Utils/UndoRedo.hpp"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
@ -10,6 +11,14 @@
|
|||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
#include "wxExtensions.hpp"
|
#include "wxExtensions.hpp"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// The standard Windows includes.
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#define NOMINMAX
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <psapi.h>
|
||||||
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
@ -36,10 +45,37 @@ std::string get_main_info(bool format_as_html)
|
|||||||
"System Version: "
|
"System Version: "
|
||||||
#endif
|
#endif
|
||||||
<< b_end << wxPlatformInfo::Get().GetOperatingSystemDescription() << line_end;
|
<< b_end << wxPlatformInfo::Get().GetOperatingSystemDescription() << line_end;
|
||||||
|
out << b_start << "Total RAM size [MB]: " << b_end << Slic3r::format_memsize_MB(Slic3r::total_physical_memory());
|
||||||
|
|
||||||
return out.str();
|
return out.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string get_mem_info(bool format_as_html)
|
||||||
|
{
|
||||||
|
std::stringstream out;
|
||||||
|
|
||||||
|
std::string b_start = format_as_html ? "<b>" : "";
|
||||||
|
std::string b_end = format_as_html ? "</b>" : "";
|
||||||
|
std::string line_end = format_as_html ? "<br>" : "\n";
|
||||||
|
|
||||||
|
const Slic3r::UndoRedo::Stack &stack = wxGetApp().plater()->undo_redo_stack();
|
||||||
|
out << b_start << "RAM size reserved for the Undo / Redo stack [MB]: " << b_end << Slic3r::format_memsize_MB(stack.get_memory_limit()) << line_end;
|
||||||
|
out << b_start << "RAM size occupied by the Undo / Redo stack [MB]: " << b_end << Slic3r::format_memsize_MB(stack.memsize()) << line_end << line_end;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ::GetCurrentProcessId());
|
||||||
|
if (hProcess != nullptr) {
|
||||||
|
PROCESS_MEMORY_COUNTERS_EX pmc;
|
||||||
|
if (GetProcessMemoryInfo(hProcess, (PROCESS_MEMORY_COUNTERS*)&pmc, sizeof(pmc)))
|
||||||
|
out << b_start << "WorkingSet [MB]: " << b_end << format_memsize_MB(pmc.WorkingSetSize) << line_end
|
||||||
|
<< b_start << "PrivateBytes [MB]: " << b_end << format_memsize_MB(pmc.PrivateUsage) << line_end
|
||||||
|
<< b_start << "Pagefile(peak) [MB]: " << b_end << format_memsize_MB(pmc.PagefileUsage) << "(" << format_memsize_MB(pmc.PeakPagefileUsage) << ")" << line_end;
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return out.str();
|
||||||
|
}
|
||||||
|
|
||||||
SysInfoDialog::SysInfoDialog()
|
SysInfoDialog::SysInfoDialog()
|
||||||
: DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
|
: DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
@ -111,7 +147,7 @@ SysInfoDialog::SysInfoDialog()
|
|||||||
"</font>"
|
"</font>"
|
||||||
"</body>"
|
"</body>"
|
||||||
"</html>", bgr_clr_str, text_clr_str, text_clr_str,
|
"</html>", bgr_clr_str, text_clr_str, text_clr_str,
|
||||||
_3DScene::get_gl_info(true, true));
|
get_mem_info(true) + "<br>" + _3DScene::get_gl_info(true, true));
|
||||||
m_opengl_info_html->SetPage(text);
|
m_opengl_info_html->SetPage(text);
|
||||||
main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
|
main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
|
||||||
}
|
}
|
||||||
|
@ -486,6 +486,7 @@ public:
|
|||||||
StackImpl() : m_memory_limit(std::min(Slic3r::total_physical_memory() / 10, size_t(1 * 16384 * 65536 / UNDO_REDO_DEBUG_LOW_MEM_FACTOR))), m_active_snapshot_time(0), m_current_time(0) {}
|
StackImpl() : m_memory_limit(std::min(Slic3r::total_physical_memory() / 10, size_t(1 * 16384 * 65536 / UNDO_REDO_DEBUG_LOW_MEM_FACTOR))), m_active_snapshot_time(0), m_current_time(0) {}
|
||||||
|
|
||||||
void set_memory_limit(size_t memsize) { m_memory_limit = memsize; }
|
void set_memory_limit(size_t memsize) { m_memory_limit = memsize; }
|
||||||
|
size_t get_memory_limit() const { return m_memory_limit; }
|
||||||
|
|
||||||
size_t memsize() const {
|
size_t memsize() const {
|
||||||
size_t memsize = 0;
|
size_t memsize = 0;
|
||||||
@ -1018,6 +1019,7 @@ void StackImpl::release_least_recently_used()
|
|||||||
Stack::Stack() : pimpl(new StackImpl()) {}
|
Stack::Stack() : pimpl(new StackImpl()) {}
|
||||||
Stack::~Stack() {}
|
Stack::~Stack() {}
|
||||||
void Stack::set_memory_limit(size_t memsize) { pimpl->set_memory_limit(memsize); }
|
void Stack::set_memory_limit(size_t memsize) { pimpl->set_memory_limit(memsize); }
|
||||||
|
size_t Stack::get_memory_limit() const { return pimpl->get_memory_limit(); }
|
||||||
size_t Stack::memsize() const { return pimpl->memsize(); }
|
size_t Stack::memsize() const { return pimpl->memsize(); }
|
||||||
void Stack::release_least_recently_used() { pimpl->release_least_recently_used(); }
|
void Stack::release_least_recently_used() { pimpl->release_least_recently_used(); }
|
||||||
void Stack::take_snapshot(const std::string& snapshot_name, const Slic3r::Model& model, const Slic3r::GUI::Selection& selection, const Slic3r::GUI::GLGizmosManager& gizmos, Slic3r::PrinterTechnology printer_technology, unsigned int flags)
|
void Stack::take_snapshot(const std::string& snapshot_name, const Slic3r::Model& model, const Slic3r::GUI::Selection& selection, const Slic3r::GUI::GLGizmosManager& gizmos, Slic3r::PrinterTechnology printer_technology, unsigned int flags)
|
||||||
|
@ -68,6 +68,7 @@ public:
|
|||||||
|
|
||||||
// Set maximum memory threshold. If the threshold is exceeded, least recently used snapshots are released.
|
// Set maximum memory threshold. If the threshold is exceeded, least recently used snapshots are released.
|
||||||
void set_memory_limit(size_t memsize);
|
void set_memory_limit(size_t memsize);
|
||||||
|
size_t get_memory_limit() const;
|
||||||
|
|
||||||
// Estimate size of the RAM consumed by the Undo / Redo stack.
|
// Estimate size of the RAM consumed by the Undo / Redo stack.
|
||||||
size_t memsize() const;
|
size_t memsize() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user