0
0
mirror of https://github.com/yse/easy_profiler.git synced 2024-12-28 01:04:41 +08:00

Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Victor Zarubkin 2016-08-08 23:11:27 +03:00
commit c6fb0bfeb9
12 changed files with 578 additions and 534 deletions

View File

@ -17,6 +17,7 @@ add_executable(${PROJECT_NAME}
blocks_tree_widget.cpp blocks_tree_widget.cpp
globals.h globals.h
globals.cpp globals.cpp
globals_qobjects.cpp
graphics_scrollbar.h graphics_scrollbar.h
graphics_scrollbar.cpp graphics_scrollbar.cpp
main_window.h main_window.h

View File

@ -34,6 +34,8 @@
#include <algorithm> #include <algorithm>
#include "blocks_graphics_view.h" #include "blocks_graphics_view.h"
#include "globals.h"
using namespace profiler_gui; using namespace profiler_gui;
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -310,7 +312,7 @@ void ProfGraphicsItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*
_painter->setPen(BORDERS_COLOR); // restore pen for rectangle painting _painter->setPen(BORDERS_COLOR); // restore pen for rectangle painting
} }
if (next_level < levelsNumber && item.children_begin != -1) if (next_level < levelsNumber && item.children_begin != NEGATIVE_ONE)
{ {
// Mark that we would not paint children of current item // Mark that we would not paint children of current item
m_levels[next_level][item.children_begin].state = -1; m_levels[next_level][item.children_begin].state = -1;
@ -319,9 +321,9 @@ void ProfGraphicsItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*
continue; continue;
} }
if (next_level < levelsNumber && item.children_begin != -1) if (next_level < levelsNumber && item.children_begin != NEGATIVE_ONE)
{ {
if (m_levelsIndexes[next_level] == -1) if (m_levelsIndexes[next_level] == NEGATIVE_ONE)
{ {
// Mark first potentially visible child item on next sublevel // Mark first potentially visible child item on next sublevel
m_levelsIndexes[next_level] = item.children_begin; m_levelsIndexes[next_level] = item.children_begin;
@ -568,7 +570,7 @@ const ::profiler_gui::ProfBlockItem* ProfGraphicsItem::intersect(const QPointF&
return &item; return &item;
} }
if (item.children_begin == -1) if (item.children_begin == NEGATIVE_ONE)
{ {
if (itemIndex != 0) if (itemIndex != 0)
{ {
@ -578,7 +580,7 @@ const ::profiler_gui::ProfBlockItem* ProfGraphicsItem::intersect(const QPointF&
--j; --j;
const auto& item2 = level[j]; const auto& item2 = level[j];
if (item2.children_begin != -1) if (item2.children_begin != NEGATIVE_ONE)
{ {
firstItem = item2.children_begin; firstItem = item2.children_begin;
break; break;
@ -600,7 +602,7 @@ const ::profiler_gui::ProfBlockItem* ProfGraphicsItem::intersect(const QPointF&
for (auto j = itemIndex + 1; j < size; ++j) for (auto j = itemIndex + 1; j < size; ++j)
{ {
const auto& item2 = level[j]; const auto& item2 = level[j];
if (item2.children_begin != -1) if (item2.children_begin != NEGATIVE_ONE)
{ {
lastItem = item2.children_begin; lastItem = item2.children_begin;
break; break;
@ -1629,7 +1631,8 @@ void ProfGraphicsView::mouseMoveEvent(QMouseEvent* _event)
auto vbar = verticalScrollBar(); auto vbar = verticalScrollBar();
m_bUpdatingRect = true; // Block scrollbars from updating scene rect to make it possible to do it only once m_bUpdatingRect = true; // Block scrollbars from updating scene rect to make it possible to do it only once
vbar->setValue(vbar->value() - delta.y()); m_pScrollbar->setValue(m_pScrollbar->value() - delta.x() / m_scale); vbar->setValue(vbar->value() - delta.y());
m_pScrollbar->setValue(m_pScrollbar->value() - delta.x() / m_scale);
m_bUpdatingRect = false; m_bUpdatingRect = false;
// Seems like an ugly stub, but QSignalBlocker is also a bad decision // Seems like an ugly stub, but QSignalBlocker is also a bad decision
// because if scrollbar does not emit valueChanged signal then viewport does not move // because if scrollbar does not emit valueChanged signal then viewport does not move

View File

@ -34,7 +34,6 @@
#include "graphics_scrollbar.h" #include "graphics_scrollbar.h"
#include "profiler/reader.h" #include "profiler/reader.h"
#include "common_types.h" #include "common_types.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -31,6 +31,7 @@
#include <QSettings> #include <QSettings>
#include <QTextCodec> #include <QTextCodec>
#include "blocks_tree_widget.h" #include "blocks_tree_widget.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -834,7 +835,7 @@ void ProfTreeWidget::contextMenuEvent(QContextMenuEvent* _event)
case COL_MAX_PER_PARENT: case COL_MAX_PER_PARENT:
case COL_MAX_PER_FRAME: case COL_MAX_PER_FRAME:
{ {
unsigned int i = -1; unsigned int i = NEGATIVE_ONE;
switch (col) switch (col)
{ {
case COL_MIN_PER_THREAD: i = item->block()->per_thread_stats->min_duration_block; break; case COL_MIN_PER_THREAD: i = item->block()->per_thread_stats->min_duration_block; break;
@ -845,7 +846,7 @@ void ProfTreeWidget::contextMenuEvent(QContextMenuEvent* _event)
case COL_MAX_PER_FRAME: i = item->block()->per_frame_stats->max_duration_block; break; case COL_MAX_PER_FRAME: i = item->block()->per_frame_stats->max_duration_block; break;
} }
if (i != -1) if (i != NEGATIVE_ONE)
{ {
menu.addSeparator(); menu.addSeparator();
itemAction = new ProfItemAction("Jump to such item", i); itemAction = new ProfItemAction("Jump to such item", i);

View File

@ -32,7 +32,6 @@
#include <vector> #include <vector>
#include "profiler/reader.h" #include "profiler/reader.h"
#include "common_types.h" #include "common_types.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -15,21 +15,15 @@
* license : TODO: add license text * license : TODO: add license text
************************************************************************/ ************************************************************************/
#define IGNORE_GLOBALS_DECLARATION
#include "globals.h" #include "globals.h"
#undef IGNORE_GLOBALS_DECLARATION
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
namespace profiler_gui { namespace profiler_gui {
ProfGlobalSignals::ProfGlobalSignals() : QObject()
{
}
ProfGlobalSignals::~ProfGlobalSignals()
{
}
ProfGlobals& ProfGlobals::instance() ProfGlobals& ProfGlobals::instance()
{ {
static ProfGlobals globals; static ProfGlobals globals;

View File

@ -22,6 +22,7 @@
#include <QObject> #include <QObject>
#include <QColor> #include <QColor>
#include "common_types.h" #include "common_types.h"
#include "globals_qobjects.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -29,6 +30,8 @@
class ProfGraphicsItem; class ProfGraphicsItem;
class ProfTreeWidgetItem; class ProfTreeWidgetItem;
const unsigned int NEGATIVE_ONE = std::numeric_limits<unsigned int>::max();
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
namespace profiler_gui { namespace profiler_gui {
@ -43,23 +46,6 @@ namespace profiler_gui {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
class ProfGlobalSignals final : public QObject
{
Q_OBJECT
public:
ProfGlobalSignals();
virtual ~ProfGlobalSignals();
signals:
void selectedThreadChanged(::profiler::thread_id_t _id);
void selectedBlockChanged(unsigned int _block_index);
};
//////////////////////////////////////////////////////////////////////////
struct ProfBlock final struct ProfBlock final
{ {
ProfGraphicsItem* graphics_item; ProfGraphicsItem* graphics_item;
@ -87,9 +73,9 @@ namespace profiler_gui {
ProfGlobals(); ProfGlobals();
}; };
#ifndef IGNORE_GLOBALS_DECLARATION
static ProfGlobals& EASY_GLOBALS = ProfGlobals::instance(); static ProfGlobals& EASY_GLOBALS = ProfGlobals::instance();
#endif
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
} // END of namespace profiler_gui. } // END of namespace profiler_gui.

View File

@ -0,0 +1,35 @@
/************************************************************************
* file name : globals_qobjects.cpp
* ----------------- :
* creation time : 2016/08/08
* copyright : (c) 2016 Victor Zarubkin, Sergey Yagovtsev
* author : Victor Zarubkin
* email : v.s.zarubkin@gmail.com
* ----------------- :
* description : The file contains implementation of ProfGlobalSignals QObject class.
* ----------------- :
* change log : * 2016/08/08 Sergey Yagovtsev: moved sources from globals.cpp
* :
* : *
* ----------------- :
* license : TODO: add license text
************************************************************************/
#include "globals_qobjects.h"
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
namespace profiler_gui {
ProfGlobalSignals::ProfGlobalSignals() : QObject()
{
}
ProfGlobalSignals::~ProfGlobalSignals()
{
}
} // END of namespace profiler_gui.
//////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,25 @@
#ifndef GLOBALS_QOBJECTS_H
#define GLOBALS_QOBJECTS_H
#include <QObject>
#include "profiler/profiler.h"
namespace profiler_gui {
class ProfGlobalSignals final : public QObject
{
Q_OBJECT
public:
ProfGlobalSignals();
virtual ~ProfGlobalSignals();
signals:
void selectedThreadChanged(::profiler::thread_id_t _id);
void selectedBlockChanged(unsigned int _block_index);
};
}
#endif // GLOBALS_QOBJECTS_H

View File

@ -22,6 +22,7 @@
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QMenu> #include <QMenu>
#include "graphics_scrollbar.h" #include "graphics_scrollbar.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -24,7 +24,6 @@
#include <QGraphicsRectItem> #include <QGraphicsRectItem>
#include <QAction> #include <QAction>
#include "common_types.h" #include "common_types.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -33,6 +33,7 @@
#include "main_window.h" #include "main_window.h"
#include "blocks_tree_widget.h" #include "blocks_tree_widget.h"
#include "blocks_graphics_view.h" #include "blocks_graphics_view.h"
#include "globals.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////