mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2026-02-23 03:33:57 +11:00
Some checks failed
Build / Nix (push) Has been cancelled
Build / Nix-1 (push) Has been cancelled
Build / Nix-2 (push) Has been cancelled
Build / Nix-3 (push) Has been cancelled
Build / Nix-4 (push) Has been cancelled
Build / Nix-5 (push) Has been cancelled
Build / Nix-6 (push) Has been cancelled
Build / Nix-7 (push) Has been cancelled
Build / Nix-8 (push) Has been cancelled
Build / Nix-9 (push) Has been cancelled
Build / Nix-10 (push) Has been cancelled
Build / Nix-11 (push) Has been cancelled
Build / Nix-12 (push) Has been cancelled
Build / Nix-13 (push) Has been cancelled
Build / Nix-14 (push) Has been cancelled
Build / Nix-15 (push) Has been cancelled
Build / Nix-16 (push) Has been cancelled
Build / Nix-17 (push) Has been cancelled
Build / Nix-18 (push) Has been cancelled
Build / Nix-19 (push) Has been cancelled
Build / Nix-20 (push) Has been cancelled
Build / Nix-21 (push) Has been cancelled
Build / Nix-22 (push) Has been cancelled
Build / Nix-23 (push) Has been cancelled
Build / Nix-24 (push) Has been cancelled
Build / Nix-25 (push) Has been cancelled
Build / Nix-26 (push) Has been cancelled
Build / Nix-27 (push) Has been cancelled
Build / Nix-28 (push) Has been cancelled
Build / Nix-29 (push) Has been cancelled
Build / Nix-30 (push) Has been cancelled
Build / Nix-31 (push) Has been cancelled
Build / Archlinux (push) Has been cancelled
Lint / Lint (push) Has been cancelled
This change requires more QtPrivate usage but eliminates generation or cleanup related window incubation controller bugs. Additionally it enables async loads prior to rendering windows.
62 lines
1.2 KiB
C++
62 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <qobject.h>
|
|
#include <qpointer.h>
|
|
#include <qqmlincubator.h>
|
|
#include <qtmetamacros.h>
|
|
|
|
#include "logcat.hpp"
|
|
|
|
QS_DECLARE_LOGGING_CATEGORY(logIncubator);
|
|
|
|
class QsQmlIncubator
|
|
: public QObject
|
|
, public QQmlIncubator {
|
|
Q_OBJECT;
|
|
|
|
public:
|
|
explicit QsQmlIncubator(QsQmlIncubator::IncubationMode mode, QObject* parent = nullptr)
|
|
: QObject(parent)
|
|
, QQmlIncubator(mode) {}
|
|
|
|
void statusChanged(QQmlIncubator::Status status) override;
|
|
|
|
signals:
|
|
void completed();
|
|
void failed();
|
|
};
|
|
|
|
class QSGRenderLoop;
|
|
|
|
class QsIncubationController
|
|
: public QObject
|
|
, public QQmlIncubationController {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
void initLoop();
|
|
void setIncubationMode(bool render);
|
|
void incubateLater();
|
|
|
|
protected:
|
|
void timerEvent(QTimerEvent* event) override;
|
|
|
|
public slots:
|
|
void incubate();
|
|
void animationStopped();
|
|
void updateIncubationTime();
|
|
|
|
protected:
|
|
void incubatingObjectCountChanged(int count) override;
|
|
|
|
private:
|
|
// QPointer did not work with forward declarations prior to 6.7
|
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
|
QPointer<QSGRenderLoop> renderLoop = nullptr;
|
|
#else
|
|
QSGRenderLoop* renderLoop = nullptr;
|
|
#endif
|
|
int incubationTime = 0;
|
|
int timerId = 0;
|
|
bool followRenderloop = false;
|
|
};
|