avoid copies of winfowrap

v0.6
audoban 8 years ago
parent 713c3ec7b6
commit 4b0e558da5

@ -147,7 +147,7 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
case Dock::DodgeAllWindows: {
for (const auto &wid : wm->windows()) {
windows.insert({wid, wm->requestInfo(wid)});
windows.insert(std::make_pair(wid, wm->requestInfo(wid)));
}
connections[0] = connect(wm, &WindowSystem::windowChanged
@ -159,7 +159,7 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
});
connections[2] = connect(wm, &WindowSystem::windowAdded
, this, [&](WId wid) {
windows.insert({wid, wm->requestInfo(wid)});
windows.insert(std::make_pair(wid, wm->requestInfo(wid)));
timerCheckWindows.start();
});
@ -367,8 +367,8 @@ void VisibilityManagerPrivate::dodgeWindows(WId wid)
if (windows.find(wid) == std::end(windows))
return;
auto winfo = wm->requestInfo(wid);
windows[wid] = winfo;
windows[wid] = wm->requestInfo(wid);
auto &winfo = windows[wid];
if (!winfo.isValid() || !wm->isOnCurrentDesktop(wid))
return;

@ -27,6 +27,7 @@
namespace Latte {
class WindowInfoWrap {
Q_DISABLE_COPY(WindowInfoWrap)
public:
constexpr WindowInfoWrap()
@ -40,7 +41,7 @@ public:
, m_wid(0) {
}
constexpr WindowInfoWrap(const WindowInfoWrap &other)
constexpr WindowInfoWrap(WindowInfoWrap &&other)
: m_isValid(other.m_isValid)
, m_isActive(other.m_isActive)
, m_isMinimized(other.m_isMinimized)
@ -48,10 +49,10 @@ public:
, m_isMaxHorz(other.m_isMaxHorz)
, m_isFullscreen(other.m_isFullscreen)
, m_isPlasmaDesktop(other.m_isPlasmaDesktop)
, m_wid(other.m_wid) {
, m_wid(std::move(other.m_wid)) {
}
inline WindowInfoWrap &operator=(const WindowInfoWrap &rhs);
inline WindowInfoWrap &operator=(WindowInfoWrap &&rhs);
constexpr bool operator==(const WindowInfoWrap &rhs) const;
constexpr bool operator<(const WindowInfoWrap &rhs) const;
constexpr bool operator>(const WindowInfoWrap &rhs) const;
@ -95,11 +96,11 @@ private:
bool m_isPlasmaDesktop : 1;
WId m_wid;
QRect m_geometry;
};
// BEGIN: definitions
inline WindowInfoWrap &WindowInfoWrap::operator=(const WindowInfoWrap &rhs)
inline WindowInfoWrap &WindowInfoWrap::operator=(WindowInfoWrap &&rhs)
{
m_isValid = rhs.m_isValid;
m_isActive = rhs.m_isActive;
@ -109,7 +110,7 @@ inline WindowInfoWrap &WindowInfoWrap::operator=(const WindowInfoWrap &rhs)
m_isFullscreen = rhs.m_isFullscreen;
m_isPlasmaDesktop = rhs.m_isPlasmaDesktop;
m_wid = rhs.m_wid;
m_geometry = rhs.m_geometry;
m_geometry = std::move(rhs.m_geometry);
return *this;
}

Loading…
Cancel
Save