X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin4_src%2FServer%2Fcompositor.cpp;fp=Usermode%2FApplications%2Faxwin4_src%2FServer%2Fcompositor.cpp;h=497bf741cf03a107d5ae666fad7a8f99fd7fd848;hb=340e7923b1e95c39ac85a4b22af7f1b53b315cd9;hp=db943c5747701e7852adcec47b3a6fb146bb179b;hpb=2d5d685c709f5cb7c635568bd23ae8356fdfcb33;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin4_src/Server/compositor.cpp b/Usermode/Applications/axwin4_src/Server/compositor.cpp index db943c57..497bf741 100644 --- a/Usermode/Applications/axwin4_src/Server/compositor.cpp +++ b/Usermode/Applications/axwin4_src/Server/compositor.cpp @@ -5,28 +5,20 @@ * compositor.cpp * - Window compositor */ -#include +#include +#include #include namespace AxWin { -CCompositor* CCompositor::s_instance; - -void CCompositor::Initialise(const CConfigCompositor& config) -{ - assert(!CCompositor::s_instance); - CCompositor::s_instance = new CCompositor(config); -} - -CCompositor::CCompositor(const CConfigCompositor& config): - m_config(config) +CCompositor::CCompositor() { // } -IWindow* CCompositor::CreateWindow(CClient& client) +CWindow* CCompositor::CreateWindow(CClient& client) { - return new CWindow(client); + return new CWindow(client, "TODO"); } void CCompositor::Redraw() @@ -35,12 +27,28 @@ void CCompositor::Redraw() if( m_damageRects.empty() ) return ; - // For all windows, check for intersection with damage rect + // Build up foreground grid (Rects and windows) + // - This should already be built (mutated on window move/resize/reorder) + + // For all windows, check for intersection with damage rects + for( auto rect : m_damageRects ) + { + for( auto window : m_windows ) + { + if( rect.Contains( window->m_rect ) ) + { + window->Repaint( rect ); + } + } + } + + m_damageRects.clear(); } -void CCompositor::DamageArea(const Rect& area) +void CCompositor::DamageArea(const CRect& area) { - + // 1. Locate intersection with any existing damaged areas + // 2. Append after removing intersections } } // namespace AxWin