展示优化

This commit is contained in:
2026-08-03 11:22:22 +08:00
parent 44cf49c0e2
commit 86c01e4cc5
15 changed files with 384 additions and 285 deletions
+3 -20
View File
@@ -123,7 +123,7 @@ void Abs_Plot::paintEvent(QPaintEvent* event) {
bool Abs_Plot::event(QEvent* event) {
bool base_result = QWidget::event(event);
return d->event(this, event, base_result);
return d->event(event, base_result);
}
void Abs_Plot_Private::paint_event(Abs_Plot* plot, QPaintEvent* event) {
@@ -155,19 +155,7 @@ void Abs_Plot_Private::paint_event(Abs_Plot* plot, QPaintEvent* event) {
core->end_present(std::move(frame), paint_begin_time, steady_now_ns());
}
void Abs_Plot_Private::request_performance_overlay_update(Abs_Plot* plot) {
if (!plot || performance_update_pending->exchange(true, std::memory_order_acq_rel))
return;
QPointer<Abs_Plot> guarded_plot(plot);
auto pending = performance_update_pending;
QTimer::singleShot(0, plot, [guarded_plot, pending]() mutable {
pending->store(false, std::memory_order_release);
if (guarded_plot)
guarded_plot->update();
});
}
bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
bool Abs_Plot_Private::event(QEvent* event, bool base_result) {
switch (event->type()) {
case QEvent::Resize: {
auto* resize_event = static_cast<QResizeEvent*>(event);
@@ -190,8 +178,7 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
break;
}
case QEvent::Leave: {
if (performance_overlay_handle_pointer_leave(*core))
request_performance_overlay_update(plot);
performance_overlay_handle_pointer_leave(*core);
Event leave_event(Event_Type::Leave);
core->dispatch_event(leave_event);
break;
@@ -200,7 +187,6 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
auto wheel_event = Qt_Event_Adapter::to_wheel_event(static_cast<QWheelEvent*>(event));
if (performance_overlay_handle_wheel(*core, wheel_event.position, wheel_event.angle_delta_y, wheel_event.pixel_delta_y)) {
event->accept();
request_performance_overlay_update(plot);
return true;
}
core->dispatch_event(wheel_event);
@@ -210,7 +196,6 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
auto pointer_event = Qt_Event_Adapter::to_pointer_event(static_cast<QMouseEvent*>(event), Event_Type::Pointer_Move);
if (performance_overlay_handle_pointer_move(*core, pointer_event.position)) {
event->accept();
request_performance_overlay_update(plot);
return true;
}
core->dispatch_event(pointer_event);
@@ -221,7 +206,6 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
auto pointer_event = Qt_Event_Adapter::to_pointer_event(mouse_event, Event_Type::Pointer_Press);
if (mouse_event->button() == Qt::LeftButton && performance_overlay_handle_pointer_press(*core, pointer_event.position)) {
event->accept();
request_performance_overlay_update(plot);
return true;
}
core->dispatch_event(pointer_event);
@@ -232,7 +216,6 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
auto pointer_event = Qt_Event_Adapter::to_pointer_event(mouse_event, Event_Type::Pointer_Release);
if (mouse_event->button() == Qt::LeftButton && performance_overlay_handle_pointer_release(*core, pointer_event.position)) {
event->accept();
request_performance_overlay_update(plot);
return true;
}
core->dispatch_event(pointer_event);