feat: 添加接口,用于性能优化测试

添加一个dbus接口,callShow被调用后任务栏才显示,否则任务栏不显示,
这里要求任务栏每次启动时这个接口必须被调用,startdde启动任务栏使用dde=dock -r启动,不影响以前的功能

Log:
Change-Id: I449d24e7f6f164ebdb5861bfc8084ccc8bffef9e
Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/7291
Reviewed-by: <mailman@uniontech.com>
Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com>
Tested-by: <mailman@uniontech.com>
This commit is contained in:
Fanpengcheng 2020-10-13 15:35:11 +08:00 committed by fanpengcheng
parent 56cad09af1
commit ff93e9e78e
5 changed files with 38 additions and 8 deletions

View File

@ -40,6 +40,11 @@ MainWindow *DBusDockAdaptors::parent() const
return static_cast<MainWindow *>(QObject::parent());
}
void DBusDockAdaptors::callShow()
{
return parent()->callShow();
}
QRect DBusDockAdaptors::geometry() const
{
return parent()->geometry();

View File

@ -36,6 +36,7 @@ class DBusDockAdaptors: public QDBusAbstractAdaptor
Q_CLASSINFO("D-Bus Introspection", ""
" <interface name=\"com.deepin.dde.Dock\">\n"
" <property access=\"read\" type=\"(iiii)\" name=\"geometry\"/>\n"
" <method name=\"callShow\"/>"
" <signal name=\"geometryChanged\">"
"<arg name=\"geometry\" type=\"(iiii)\"/>"
"</signal>"
@ -48,6 +49,9 @@ public:
MainWindow *parent() const;
public Q_SLOTS: // METHODS
void callShow();
public: // PROPERTIES
Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged)
QRect geometry() const;

View File

@ -229,11 +229,13 @@ int main(int argc, char *argv[])
DLogManager::registerFileAppender();
QCommandLineOption disablePlugOption(QStringList() << "x" << "disable-plugins", "do not load plugins.");
QCommandLineOption runOption(QStringList() << "r" << "run-by-stardde", "run by startdde.");
QCommandLineParser parser;
parser.setApplicationDescription("DDE Dock");
parser.addHelpOption();
parser.addVersionOption();
parser.addOption(disablePlugOption);
parser.addOption(runOption);
parser.process(app);
DGuiApplicationHelper::setSingleInstanceInterval(-1);
@ -254,6 +256,8 @@ int main(int argc, char *argv[])
QDBusConnection::sessionBus().registerService("com.deepin.dde.Dock");
QDBusConnection::sessionBus().registerObject("/com/deepin/dde/Dock", "com.deepin.dde.Dock", &mw);
qApp->setProperty("CANSHOW", !parser.isSet(runOption));
mw.launch();
if (!IsSaveMode() && !parser.isSet(disablePlugOption)) {

View File

@ -128,6 +128,9 @@ MainWindow::~MainWindow()
void MainWindow::launch()
{
if (!qApp->property("CANSHOW").toBool())
return;
m_launched = true;
qApp->processEvents();
setVisible(true);
@ -135,6 +138,19 @@ void MainWindow::launch()
m_shadowMaskOptimizeTimer->start();
}
void MainWindow::callShow()
{
static bool flag = false;
if (flag) {
return;
}
flag = true;
qApp->setProperty("CANSHOW", true);
launch();
}
void MainWindow::showEvent(QShowEvent *e)
{
QWidget::showEvent(e);
@ -280,7 +296,7 @@ void MainWindow::initConnections()
// 响应后端触控屏拖拽任务栏高度长按信号
connect(TouchSignalManager::instance(), &TouchSignalManager::middleTouchPress, this, &MainWindow::touchRequestResizeDock);
connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ](){
connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ]() {
static QPoint lastPos;
QPoint curPos = QCursor::pos();
if (lastPos == curPos) {
@ -368,9 +384,9 @@ void MainWindow::resetDragWindow()
}
QRect rect = m_multiScreenWorker->dockRect(m_multiScreenWorker->deskScreen()
, m_multiScreenWorker->position()
, HideMode::KeepShowing,
m_multiScreenWorker->displayMode());
, m_multiScreenWorker->position()
, HideMode::KeepShowing
, m_multiScreenWorker->displayMode());
// 这个时候屏幕有可能是隐藏的不能直接使用this->width()这种去设置任务栏的高度,而应该保证原值
int dockSize = 0;
@ -421,7 +437,7 @@ void MainWindow::onMainWindowSizeChanged(QPoint offset)
newRect.setX(rect.x());
newRect.setY(rect.y() + rect.height() - qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE));
newRect.setWidth(rect.width());
newRect.setHeight(qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE ));
newRect.setHeight(qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE));
}
break;
case Left: {
@ -466,9 +482,9 @@ void MainWindow::touchRequestResizeDock()
{
const QPoint touchPos(QCursor::pos());
QRect dockRect = m_multiScreenWorker->dockRect(m_multiScreenWorker->deskScreen()
, m_multiScreenWorker->position()
, HideMode::KeepShowing
, m_multiScreenWorker->displayMode());
, m_multiScreenWorker->position()
, HideMode::KeepShowing
, m_multiScreenWorker->displayMode());
// 隐藏状态返回
if (width() == 0 || height() == 0) {

View File

@ -130,6 +130,7 @@ public:
public slots:
void launch();
void callShow();
private:
using QWidget::show;