39c9925fcf
to cut down on BRegion related allocations, cannot really tell if it speeds things up * used the new BRegion pool in WindowLayer and ViewLayer whereever a BRegion was used on the stack * fixed the debugging stuff in MultiLocker - it will get you into the debugger if you - try to nest read locks - try to write lock when your are a reader already - don't match up nested locks when your a writer -> but only if you #define DEBUG 1 in the .cpp, is off by default now * went over WindowLayer, ServerWindow, Desktop and a few other places and fixed the locking for use with the MultiLocker, the "a reader can not become a writer" is especially tricky, feel free to review the changes * activated the MultiLocker, I tested this quite a bit, if there are problems simply turn on DEBUG and you should drop into the debugger right where the problem is... hope all is good git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17046 a95241bf-73f2-0310-859d-f6bbb57e9c96
35 lines
546 B
C++
35 lines
546 B
C++
/*
|
|
* Copyright (c) 2006, Haiku, Inc.
|
|
* Distributed under the terms of the MIT license.
|
|
*
|
|
* Authors:
|
|
* Stephan Aßmus <superstippi@gmx.de>
|
|
*/
|
|
|
|
#ifndef REGION_POOL_H
|
|
#define REGION_POOL_H
|
|
|
|
#include <List.h>
|
|
|
|
class BRegion;
|
|
|
|
#define DEBUG_LEAK 0
|
|
|
|
class RegionPool {
|
|
public:
|
|
RegionPool();
|
|
virtual ~RegionPool();
|
|
|
|
BRegion* GetRegion();
|
|
BRegion* GetRegion(const BRegion& other);
|
|
void Recycle(BRegion* region);
|
|
|
|
private:
|
|
BList fAvailable;
|
|
#if DEBUG_LEAK
|
|
BList fUsed;
|
|
#endif
|
|
};
|
|
|
|
#endif // REGION_POOL_H
|