Move Window::{depth,hasAlpha,visual} to X11Window
This commit is contained in:
parent
87bfdcf1d6
commit
46d0c04f91
6 changed files with 29 additions and 48 deletions
|
@ -409,7 +409,6 @@ void InternalWindow::present(const std::shared_ptr<QOpenGLFramebufferObject> fbo
|
|||
|
||||
m_fbo = fbo;
|
||||
|
||||
setDepth(32);
|
||||
surfaceItem()->addDamage(surfaceItem()->rect().toAlignedRect());
|
||||
}
|
||||
|
||||
|
@ -428,7 +427,6 @@ void InternalWindow::present(const QImage &image, const QRegion &damage)
|
|||
|
||||
m_image = image;
|
||||
|
||||
setDepth(32);
|
||||
surfaceItem()->addDamage(damage);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ WaylandWindow::WaylandWindow(SurfaceInterface *surface)
|
|||
: m_isScreenLocker(surface->client() == waylandServer()->screenLockerClientConnection())
|
||||
{
|
||||
setSurface(surface);
|
||||
setDepth(32);
|
||||
|
||||
connect(surface, &SurfaceInterface::shadowChanged,
|
||||
this, &WaylandWindow::updateShadow);
|
||||
|
|
|
@ -66,8 +66,6 @@ std::shared_ptr<Decoration::DecorationPalette> Window::s_defaultPalette;
|
|||
|
||||
Window::Window()
|
||||
: m_output(workspace()->activeOutput())
|
||||
, m_visual(XCB_NONE)
|
||||
, bit_depth(24)
|
||||
, info(nullptr)
|
||||
, ready_for_painting(false)
|
||||
, m_internalId(QUuid::createUuid())
|
||||
|
@ -555,18 +553,6 @@ QString Window::windowRole() const
|
|||
return QString::fromLatin1(info->windowRole());
|
||||
}
|
||||
|
||||
void Window::setDepth(int depth)
|
||||
{
|
||||
if (bit_depth == depth) {
|
||||
return;
|
||||
}
|
||||
const bool oldAlpha = hasAlpha();
|
||||
bit_depth = depth;
|
||||
if (oldAlpha != hasAlpha()) {
|
||||
Q_EMIT hasAlphaChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QRegion Window::inputShape() const
|
||||
{
|
||||
if (m_surface) {
|
||||
|
|
25
src/window.h
25
src/window.h
|
@ -684,12 +684,9 @@ public:
|
|||
static bool resourceMatch(const Window *c1, const Window *c2);
|
||||
|
||||
bool readyForPainting() const; // true if the window has been already painted its contents
|
||||
xcb_visualid_t visual() const;
|
||||
QRegion inputShape() const;
|
||||
void setOpacity(qreal opacity);
|
||||
qreal opacity() const;
|
||||
int depth() const;
|
||||
bool hasAlpha() const;
|
||||
virtual bool setupCompositing();
|
||||
virtual void finishCompositing();
|
||||
EffectWindowImpl *effectWindow();
|
||||
|
@ -1403,10 +1400,6 @@ Q_SIGNALS:
|
|||
* @since 5.0
|
||||
*/
|
||||
void windowClassChanged();
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
void hasAlphaChanged();
|
||||
|
||||
/**
|
||||
* Emitted whenever the Surface for this Window changes.
|
||||
|
@ -1510,14 +1503,11 @@ protected:
|
|||
Xcb::Property fetchSkipCloseAnimation() const;
|
||||
void readSkipCloseAnimation(Xcb::Property &prop);
|
||||
void getSkipCloseAnimation();
|
||||
void setDepth(int depth);
|
||||
|
||||
Output *m_output = nullptr;
|
||||
QRectF m_frameGeometry;
|
||||
QRectF m_clientGeometry;
|
||||
QRectF m_bufferGeometry;
|
||||
xcb_visualid_t m_visual;
|
||||
int bit_depth;
|
||||
NETWinInfo *info;
|
||||
bool ready_for_painting;
|
||||
|
||||
|
@ -2030,11 +2020,6 @@ inline bool Window::readyForPainting() const
|
|||
return ready_for_painting;
|
||||
}
|
||||
|
||||
inline xcb_visualid_t Window::visual() const
|
||||
{
|
||||
return m_visual;
|
||||
}
|
||||
|
||||
inline bool Window::isDesktop() const
|
||||
{
|
||||
return windowType() == NET::Desktop;
|
||||
|
@ -2140,16 +2125,6 @@ inline bool Window::isInternal() const
|
|||
return false;
|
||||
}
|
||||
|
||||
inline int Window::depth() const
|
||||
{
|
||||
return bit_depth;
|
||||
}
|
||||
|
||||
inline bool Window::hasAlpha() const
|
||||
{
|
||||
return depth() == 32;
|
||||
}
|
||||
|
||||
inline const QRegion &Window::opaqueRegion() const
|
||||
{
|
||||
return opaque_region;
|
||||
|
|
|
@ -197,13 +197,15 @@ void X11DecorationRenderer::render(const QRegion ®ion)
|
|||
return;
|
||||
}
|
||||
xcb_connection_t *c = kwinApp()->x11Connection();
|
||||
X11Window *window = static_cast<X11Window *>(client()->window());
|
||||
|
||||
if (m_gc == XCB_NONE) {
|
||||
m_gc = xcb_generate_id(c);
|
||||
xcb_create_gc(c, m_gc, client()->window()->frameId(), 0, nullptr);
|
||||
xcb_create_gc(c, m_gc, window->frameId(), 0, nullptr);
|
||||
}
|
||||
|
||||
QRectF left, top, right, bottom;
|
||||
client()->window()->layoutDecorationRects(left, top, right, bottom);
|
||||
window->layoutDecorationRects(left, top, right, bottom);
|
||||
|
||||
const QRect geometry = region.boundingRect();
|
||||
left = left.intersected(geometry);
|
||||
|
@ -211,14 +213,14 @@ void X11DecorationRenderer::render(const QRegion ®ion)
|
|||
right = right.intersected(geometry);
|
||||
bottom = bottom.intersected(geometry);
|
||||
|
||||
auto renderPart = [this, c](const QRect &geo) {
|
||||
auto renderPart = [this, c, window](const QRect &geo) {
|
||||
if (!geo.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Guess the pixel format of the X pixmap into which the QImage will be copied.
|
||||
QImage::Format format;
|
||||
const int depth = client()->window()->depth();
|
||||
const int depth = window->depth();
|
||||
switch (depth) {
|
||||
case 30:
|
||||
format = QImage::Format_A2RGB30_Premultiplied;
|
||||
|
@ -241,8 +243,8 @@ void X11DecorationRenderer::render(const QRegion ®ion)
|
|||
p.setClipRect(geo);
|
||||
renderToPainter(&p, geo);
|
||||
|
||||
xcb_put_image(c, XCB_IMAGE_FORMAT_Z_PIXMAP, client()->window()->frameId(), m_gc,
|
||||
image.width(), image.height(), geo.x(), geo.y(), 0, client()->window()->depth(),
|
||||
xcb_put_image(c, XCB_IMAGE_FORMAT_Z_PIXMAP, window->frameId(), m_gc,
|
||||
image.width(), image.height(), geo.x(), geo.y(), 0, window->depth(),
|
||||
image.sizeInBytes(), image.constBits());
|
||||
};
|
||||
renderPart(left.toRect());
|
||||
|
|
|
@ -90,6 +90,10 @@ public:
|
|||
QRectF frameRectToBufferRect(const QRectF &rect) const;
|
||||
QSizeF implicitSize() const;
|
||||
|
||||
xcb_visualid_t visual() const;
|
||||
int depth() const;
|
||||
bool hasAlpha() const;
|
||||
|
||||
QMatrix4x4 inputTransformation() const override;
|
||||
|
||||
bool isTransient() const override;
|
||||
|
@ -477,6 +481,8 @@ private:
|
|||
SyncRequest m_syncRequest;
|
||||
static bool check_active_modal; ///< \see X11Window::checkActiveModal()
|
||||
int sm_stacking_order;
|
||||
xcb_visualid_t m_visual = XCB_NONE;
|
||||
int bit_depth = 24;
|
||||
friend struct ResetupRulesProcedure;
|
||||
|
||||
friend bool performTransiencyCheck();
|
||||
|
@ -509,6 +515,21 @@ private:
|
|||
quint64 m_surfaceSerial = 0;
|
||||
};
|
||||
|
||||
inline xcb_visualid_t X11Window::visual() const
|
||||
{
|
||||
return m_visual;
|
||||
}
|
||||
|
||||
inline int X11Window::depth() const
|
||||
{
|
||||
return bit_depth;
|
||||
}
|
||||
|
||||
inline bool X11Window::hasAlpha() const
|
||||
{
|
||||
return depth() == 32;
|
||||
}
|
||||
|
||||
inline xcb_window_t X11Window::wrapperId() const
|
||||
{
|
||||
return m_wrapper;
|
||||
|
|
Loading…
Reference in a new issue