kgreeter: pre-scale and cache the scaled background image

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-04-28 11:32:53 +03:00
parent 27367c93c6
commit d1f32b2a66

View file

@ -88,6 +88,7 @@ private:
QList<QAction*> m_sessionactions; QList<QAction*> m_sessionactions;
QList<QAction*> m_layoutactions; QList<QAction*> m_layoutactions;
QImage m_background; QImage m_background;
QImage m_backgroundscaled;
QImage m_rectangle; QImage m_rectangle;
QImage m_rectanglescaled; QImage m_rectanglescaled;
int m_timerid; int m_timerid;
@ -237,14 +238,18 @@ KGreeter::~KGreeter()
void KGreeter::paintEvent(QPaintEvent *event) void KGreeter::paintEvent(QPaintEvent *event)
{ {
QPainter painter(this);
if (!m_background.isNull()) { if (!m_background.isNull()) {
QPainter painter(this); const QSize windowsize = size();
painter.drawImage(rect(), m_background); if (m_backgroundscaled.isNull() || windowsize != m_backgroundscaled.size()) {
m_backgroundscaled = m_background.scaled(windowsize);
}
painter.drawImage(QPoint(0, 0), m_backgroundscaled);
} }
if (!m_rectangle.isNull()) { if (!m_rectangle.isNull()) {
m_ui.groupframe->setFrameShape(QFrame::NoFrame); m_ui.groupframe->setFrameShape(QFrame::NoFrame);
QPainter painter(this);
QSize kgreeterrectanglesize(m_ui.groupframe->size()); QSize kgreeterrectanglesize(m_ui.groupframe->size());
kgreeterrectanglesize.rwidth() = kgreeterrectanglesize.width() * 1.06; kgreeterrectanglesize.rwidth() = kgreeterrectanglesize.width() * 1.06;
kgreeterrectanglesize.rheight() = kgreeterrectanglesize.height() * 1.65; kgreeterrectanglesize.rheight() = kgreeterrectanglesize.height() * 1.65;