This may be a quick and dirty fix to the problems we've been having with the update code. However this requires something from DisplayDriver. I'll write about this in a moment on app_server list.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12165 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adi Oanca
2005-03-30 20:06:50 +00:00
parent c900253170
commit f694c0e30e
6 changed files with 48 additions and 16 deletions
+21 -3
View File
@@ -1408,7 +1408,9 @@ void ServerWindow::DispatchMessage(int32 code, LinkMsgReader &link)
case AS_BEGIN_UPDATE:
{
DTRACE(("ServerWindowo %s: AS_BEGIN_UPDATE\n",fTitle.String()));
fWinBorder->GetRootLayer()->Lock();
cl->UpdateStart();
fWinBorder->GetRootLayer()->Unlock();
break;
}
case AS_END_UPDATE:
@@ -1636,10 +1638,23 @@ void ServerWindow::DispatchMessage(int32 code, LinkMsgReader &link)
STRACE(("ServerWindow %s: Message Zoom unimplemented\n",fTitle.String()));
break;
}
default:
{
DispatchGraphicsMessage(code, link);
}
}
}
// -------------------- Graphics messages ----------------------------------
void ServerWindow::DispatchGraphicsMessage(int32 code, LinkMsgReader &link)
{
fWinBorder->GetRootLayer()->Lock();
BRegion rreg(cl->fVisible);
rreg.Include(&fWinBorder->zUpdateReg);
desktop->GetDisplayDriver()->ConstrainClippingRegion(&rreg);
switch (code)
{
case AS_LAYER_SET_HIGH_COLOR:
{
DTRACE(("ServerWindow %s: Message AS_LAYER_SET_HIGH_COLOR: Layer: %s\n",fTitle.String(), cl->fName->String()));
@@ -2222,6 +2237,9 @@ void ServerWindow::DispatchMessage(int32 code, LinkMsgReader &link)
break;
}
}
desktop->GetDisplayDriver()->ConstrainClippingRegion(NULL);
fWinBorder->GetRootLayer()->Unlock();
}
//------------------------------------------------------------------------------
/*!