#
a825e403 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
not in a nice way, but I hope to have fixed the deadlocking problems on program exit git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15279 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7943e1a8 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
scrolling seems to work nicely, dirty regions are tracked fine and shifted along with the scrolling if necessary git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15277 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
727653f7 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
implemented invalidation triggered from the client side. 20 clients each displaying an animation in one view at 25 fps leaves the new clipping unimpressed, everything is fluent, also during moving and resizing windows git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15275 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c8275c2 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
showing and hiding windows and views works now, views are not so heavily tested, but any problems should be easy to fix. the recursive IsHidden() is now avoided, there is only one recursion now, which is when the hidden status changes. in the simulation, double clicking a window will temporarily hide it and show it asynchronously from the window thread. looks like the locking model works out fine. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15272 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7fd1af6f |
|
30-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
I did some profiling using Daniel Reinholds ezprof, which is quite nice actually. I optimized a bit, without spending too much time on that yet, and now the clipping is on average 7 times faster than the current app_server (the time spend in the root layer thread) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15251 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1ba9992d |
|
29-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
a views screen clipping does no longer includes the windows actual clipping, only the content clipping, this simplifies some calculations, and avoids invalidating each views screen clipping when the window clipping changes. at any time the views screen clipping is used, we need to watch out for the effective clipping anyways git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c63a78aa |
|
29-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
now doing without a global dirty region, and it seems it gained a little speed too, should be easier now to make the multi locker work git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
748533bb |
|
28-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
figured out and solved several problems: * views are now correctly clipped when they are (partly) hidden under their parent(s) * removed fIsTopView, the top view in a window simply has no parent * introduced WindowLayer::CopyContents() which blits part of the contents to another location, while moving that part in the dirty regions. Since this is currently used from the Desktop thread, messing with the update session dirty regions requires now to lock the clipping * that feature is now used for blitting a view to its new location in ViewLayer::MoveBy(), which works for right and/or bottom aligned views just fine * I left the global dirty region in Desktop for now, moving it into each WindowLayer gave quite a slowdown and caused all kinds of other problems. * a view is now cleared to the background color right before the first drawing command from the client is executed for that view, this reduces flickering a lot because the content is drawn much more shortly after the background is cleared. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15201 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
12aa597d |
|
27-Nov-2005 |
Adi Oanca <adioanca@nowhere.fake> |
Played a bit :-) * Introduced WindowLayer::Hide/Show/IsHidden() * Made ViewLayer::IsHidden() more robust. * Same with ::TopLayer() * modified a little ViewLayer::MoveBy() - prepared it to work with hidden/shown code that will come soon; only calculate dirty regions if a ViewLayer has a parent, otherwise the move action is pointless. * Did the same thing with ::MoveBy() except for the parent stuff - no need for a parent on resizing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f5552ed0 |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
this fixes the bugs in the update session region enforcement during client drawing, there is only one bug left now: resized ViewLayers don't invalidate the correct regions (they don't take areas into account that are hidden because the parent is too small) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15168 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
987aa5e4 |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
remaining bugs are with update session region tracking and dirty regions when layers are moved and resized, the window clipping itself seems to work reliably now git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15163 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f705589 |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
still buggy but less buggy than before, more caching and less overhead git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15160 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ff89d51e |
|
25-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
* adds drawing commands from clients * adds concept of a current and a pending update session * marks dirty views being resized or moved Some aspects of the design are buggy, others are slow, but I'm approaching a good overview of what's needed and what problems lurk in the details. In the end I hope to make things work fast and correctly at all times. Adi or anybody else, feel free to join the efforts. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0b78f37e |
|
24-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
* a bit more sophisticated * now with actual view layers inside the windows * implemented the resize modes (from Adis code) * windows have resize handles and more correctly clip the views inside * bringing windows to front or sending them behind all others * one active window, the others are inactive * with and without focus follows mouse mode * bugs: - the region marked dirty when views are resized is not correct yet * todo: - move the dirty region from being managed by the desktop to being managed in each window (and being local too) - scrolling - hiding/showing of windows and views I plan to extend this to fully simulate asynchronous drawing from clients, to see any problems before using this in the real server one day. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15132 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bef1ed93 |
|
24-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
Adi and I have had long talks about better approaches to clipping and we are convinced that a different design can significantly speed up the clipping processing in the root layer thread. This is a first prototype implementing the new ideas. Lots of features are missing yet, but Adi asked me to commit it now, so that we can both continue to work on it. The purpose of the new design is to significantly reduce the computations during an atomic clipping update, and also to scale much better with many more open windows. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15101 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a825e4034c431c03e1afdbb3da35cde2e66f0972 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
not in a nice way, but I hope to have fixed the deadlocking problems on program exit git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15279 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7943e1a86d05874bf0be5a4ce9ec02ae897209af |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
scrolling seems to work nicely, dirty regions are tracked fine and shifted along with the scrolling if necessary git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15277 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
727653f7ab76ecb76d377ae83c0a319f67ab8abe |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
implemented invalidation triggered from the client side. 20 clients each displaying an animation in one view at 25 fps leaves the new clipping unimpressed, everything is fluent, also during moving and resizing windows git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15275 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c8275c2ea950aae83caebb29d632a5fd9a9b286 |
|
01-Dec-2005 |
Stephan Aßmus <superstippi@gmx.de> |
showing and hiding windows and views works now, views are not so heavily tested, but any problems should be easy to fix. the recursive IsHidden() is now avoided, there is only one recursion now, which is when the hidden status changes. in the simulation, double clicking a window will temporarily hide it and show it asynchronously from the window thread. looks like the locking model works out fine. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15272 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7fd1af6f040618119df7874f8be3a61641fc76c9 |
|
30-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
I did some profiling using Daniel Reinholds ezprof, which is quite nice actually. I optimized a bit, without spending too much time on that yet, and now the clipping is on average 7 times faster than the current app_server (the time spend in the root layer thread) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15251 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1ba9992d13319c2f2791d5b632c5e08d67800782 |
|
29-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
a views screen clipping does no longer includes the windows actual clipping, only the content clipping, this simplifies some calculations, and avoids invalidating each views screen clipping when the window clipping changes. at any time the views screen clipping is used, we need to watch out for the effective clipping anyways git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c63a78aafa09c38291fb32ffb57b3aeb1477d3f0 |
|
29-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
now doing without a global dirty region, and it seems it gained a little speed too, should be easier now to make the multi locker work git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
748533bbf95e758bb1d775b4f2b0770dd6b22722 |
|
28-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
figured out and solved several problems: * views are now correctly clipped when they are (partly) hidden under their parent(s) * removed fIsTopView, the top view in a window simply has no parent * introduced WindowLayer::CopyContents() which blits part of the contents to another location, while moving that part in the dirty regions. Since this is currently used from the Desktop thread, messing with the update session dirty regions requires now to lock the clipping * that feature is now used for blitting a view to its new location in ViewLayer::MoveBy(), which works for right and/or bottom aligned views just fine * I left the global dirty region in Desktop for now, moving it into each WindowLayer gave quite a slowdown and caused all kinds of other problems. * a view is now cleared to the background color right before the first drawing command from the client is executed for that view, this reduces flickering a lot because the content is drawn much more shortly after the background is cleared. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15201 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
12aa597dc6295ab8a275df5ee8dd340dd39a7e22 |
|
27-Nov-2005 |
Adi Oanca <adioanca@nowhere.fake> |
Played a bit :-) * Introduced WindowLayer::Hide/Show/IsHidden() * Made ViewLayer::IsHidden() more robust. * Same with ::TopLayer() * modified a little ViewLayer::MoveBy() - prepared it to work with hidden/shown code that will come soon; only calculate dirty regions if a ViewLayer has a parent, otherwise the move action is pointless. * Did the same thing with ::MoveBy() except for the parent stuff - no need for a parent on resizing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f5552ed0b29d9bb7fac03d377ee52bffeb6d53d8 |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
this fixes the bugs in the update session region enforcement during client drawing, there is only one bug left now: resized ViewLayers don't invalidate the correct regions (they don't take areas into account that are hidden because the parent is too small) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15168 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
987aa5e4d43f0e681371559dc7202f93182b832d |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
remaining bugs are with update session region tracking and dirty regions when layers are moved and resized, the window clipping itself seems to work reliably now git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15163 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f705589e2ac90a1867839d5e44765a3ed9e2ada |
|
26-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
still buggy but less buggy than before, more caching and less overhead git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15160 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ff89d51e02ce7dcd6177bdbf847457503112a3b8 |
|
25-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
* adds drawing commands from clients * adds concept of a current and a pending update session * marks dirty views being resized or moved Some aspects of the design are buggy, others are slow, but I'm approaching a good overview of what's needed and what problems lurk in the details. In the end I hope to make things work fast and correctly at all times. Adi or anybody else, feel free to join the efforts. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0b78f37e8e1e1482f466ccea41553548cc7ffe06 |
|
24-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
* a bit more sophisticated * now with actual view layers inside the windows * implemented the resize modes (from Adis code) * windows have resize handles and more correctly clip the views inside * bringing windows to front or sending them behind all others * one active window, the others are inactive * with and without focus follows mouse mode * bugs: - the region marked dirty when views are resized is not correct yet * todo: - move the dirty region from being managed by the desktop to being managed in each window (and being local too) - scrolling - hiding/showing of windows and views I plan to extend this to fully simulate asynchronous drawing from clients, to see any problems before using this in the real server one day. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15132 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bef1ed93e146a1bed4156b62f743e8c9cf83485c |
|
24-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
Adi and I have had long talks about better approaches to clipping and we are convinced that a different design can significantly speed up the clipping processing in the root layer thread. This is a first prototype implementing the new ideas. Lots of features are missing yet, but Adi asked me to commit it now, so that we can both continue to work on it. The purpose of the new design is to significantly reduce the computations during an atomic clipping update, and also to scale much better with many more open windows. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15101 a95241bf-73f2-0310-859d-f6bbb57e9c96
|