Skip to content

Commit 89de963

Browse files
author
yifeidong
committed
Add a mip level filter in Memory leak finder
1 parent ebe69ea commit 89de963

6 files changed

Lines changed: 61 additions & 1 deletion

File tree

source/frontend/models/compare/memory_leak_finder_model.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,16 +250,31 @@ namespace rmv
250250
UpdateLabels();
251251
}
252252

253+
void MemoryLeakFinderModel::FilterByMipLevelChanged(int min_value, int max_value)
254+
{
255+
const uint64_t scaled_min = rmv_util::CalculateThresholdFromStepValue(min_value, rmv::kMipSliderRange - 1);
256+
const uint64_t scaled_max = rmv_util::CalculateThresholdFromStepValue(max_value, rmv::kMipSliderRange - 1);
257+
258+
proxy_model_->SetMipLevelFilter(scaled_min, scaled_max);
259+
proxy_model_->invalidate();
260+
261+
UpdateLabels();
262+
}
263+
253264
void MemoryLeakFinderModel::UpdatePreferredHeapList(const QString& preferred_heap_filter)
254265
{
255266
proxy_model_->SetPreferredHeapFilter(preferred_heap_filter);
256267
proxy_model_->invalidate();
268+
269+
UpdateLabels();
257270
}
258271

259272
void MemoryLeakFinderModel::UpdateResourceUsageList(const QString& resource_usage_filter)
260273
{
261274
proxy_model_->SetResourceUsageFilter(resource_usage_filter);
262275
proxy_model_->invalidate();
276+
277+
UpdateLabels();
263278
}
264279

265280
MemoryLeakFinderProxyModel* MemoryLeakFinderModel::GetResourceProxyModel() const

source/frontend/models/compare/memory_leak_finder_model.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ namespace rmv
8484
/// @param [in] max_value Maximum value of slider span.
8585
void FilterBySizeChanged(int min_value, int max_value);
8686

87+
/// @brief Handle what happens when user changes the 'filter by mip level' slider.
88+
///
89+
/// @param [in] min_value Minimum value of slider span.
90+
/// @param [in] max_value Maximum value of slider span.
91+
void FilterByMipLevelChanged(int min_value, int max_value);
92+
8793
/// @brief Update the list of heaps selected. This is set up from the preferred heap combo box.
8894
///
8995
/// @param [in] preferred_heap_filter The regular expression string of selected heaps.

source/frontend/views/compare/memory_leak_finder_pane.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ MemoryLeakFinderPane::MemoryLeakFinderPane(QWidget* parent)
6363

6464
rmv::widget_util::InitCommonFilteringComponents(ui_->search_box_, ui_->size_slider_);
6565
rmv::widget_util::InitRangeSlider(ui_->size_slider_);
66+
rmv::widget_util::InitRangeSlider(ui_->mip_slider_);
6667

6768
ui_->base_allocations_checkbox_->Initialize(false, rmv::RMVSettings::Get().GetColorSnapshotViewed(), Qt::black);
6869
ui_->both_allocations_checkbox_->Initialize(
@@ -72,6 +73,7 @@ MemoryLeakFinderPane::MemoryLeakFinderPane(QWidget* parent)
7273
CompareFilterChanged();
7374

7475
connect(ui_->size_slider_, &DoubleSliderWidget::SpanChanged, this, &MemoryLeakFinderPane::FilterBySizeSliderChanged);
76+
connect(ui_->mip_slider_, &DoubleSliderWidget::SpanChanged, this, &MemoryLeakFinderPane::FilterByMipLevelSliderChanged);
7577
connect(ui_->search_box_, &QLineEdit::textChanged, this, &MemoryLeakFinderPane::SearchBoxChanged);
7678
connect(ui_->resource_table_view_, &QTableView::doubleClicked, this, &MemoryLeakFinderPane::TableDoubleClicked);
7779
connect(ui_->both_allocations_checkbox_, &RMVColoredCheckbox::Clicked, this, &MemoryLeakFinderPane::CompareFilterChanged);
@@ -170,6 +172,8 @@ void MemoryLeakFinderPane::Reset()
170172

171173
ui_->size_slider_->SetLowerValue(0);
172174
ui_->size_slider_->SetUpperValue(ui_->size_slider_->maximum());
175+
ui_->mip_slider_->SetLowerValue(ui_->mip_slider_->minimum());
176+
ui_->mip_slider_->SetUpperValue(ui_->mip_slider_->maximum());
173177
ui_->search_box_->setText("");
174178
}
175179

@@ -191,6 +195,12 @@ void MemoryLeakFinderPane::FilterBySizeSliderChanged(int min_value, int max_valu
191195
SetMaximumResourceTableHeight();
192196
}
193197

198+
void MemoryLeakFinderPane::FilterByMipLevelSliderChanged(int min_value, int max_value)
199+
{
200+
model_->FilterByMipLevelChanged(min_value, max_value);
201+
SetMaximumResourceTableHeight();
202+
}
203+
194204
void MemoryLeakFinderPane::CompareFilterChanged()
195205
{
196206
rmv::SnapshotCompareId filter = GetCompareIdFilter();

source/frontend/views/compare/memory_leak_finder_pane.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ private slots:
5959
/// @param [in] max_value Maximum value of slider span.
6060
void FilterBySizeSliderChanged(int min_value, int max_value);
6161

62+
/// @brief Slot to handle what happens when the 'filter by mip level' slider changes.
63+
///
64+
/// @param [in] min_value Minimum value of slider span.
65+
/// @param [in] max_value Maximum value of slider span.
66+
void FilterByMipLevelSliderChanged(int min_value, int max_value);
67+
6268
/// @brief Checkboxes on the top were clicked.
6369
void CompareFilterChanged();
6470

source/frontend/views/compare/memory_leak_finder_pane.ui

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,29 @@
351351
</property>
352352
</widget>
353353
</item>
354+
<item>
355+
<widget class="ScaledLabel" name="label_6_">
356+
<property name="sizePolicy">
357+
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
358+
<horstretch>0</horstretch>
359+
<verstretch>0</verstretch>
360+
</sizepolicy>
361+
</property>
362+
<property name="text">
363+
<string>Filter by mip level:</string>
364+
</property>
365+
</widget>
366+
</item>
367+
<item>
368+
<widget class="RmvRangeSlider" name="mip_slider_">
369+
<property name="orientation">
370+
<enum>Qt::Horizontal</enum>
371+
</property>
372+
<property name="SliderType">
373+
<enum>ESliderType::MipLevel</enum>
374+
</property>
375+
</widget>
376+
</item>
354377
<item>
355378
<spacer name="horizontal_spacer_2_">
356379
<property name="orientation">

source/frontend/views/custom_widgets/rmv_range_slider.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ enum class ESliderType : int8_t
2424
/// @brief Range slider that extends the double slider widget by adding a range value label.
2525
class RmvRangeSlider : public DoubleSliderWidget
2626
{
27-
Q_PROPERTY(int SliderType READ SliderType WRITE setSliderType)
27+
Q_PROPERTY(ESliderType SliderType READ SliderType WRITE setSliderType)
2828
public:
2929
/// @brief Constructor
3030
///

0 commit comments

Comments
 (0)