From: <re...@us...> - 2005-09-13 22:57:28
|
Update of /cvsroot/crystal/CS/include/cstool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30553/include/cstool Modified Files: rbuflock.h Log Message: res made the software renderer support interleaved arrays. Index: rbuflock.h =================================================================== RCS file: /cvsroot/crystal/CS/include/cstool/rbuflock.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- rbuflock.h 30 Aug 2005 01:50:11 -0000 1.9 +++ rbuflock.h 13 Sep 2005 22:57:13 -0000 1.10 @@ -39,7 +39,7 @@ csRenderBufferLockType lockType; bool isLocked; T* lockBuf; - size_t bufOfs, bufStride; + size_t bufStride; csRenderBufferLock() {} public: @@ -48,8 +48,8 @@ */ csRenderBufferLock (iRenderBuffer* buf, csRenderBufferLockType lock = CS_BUF_LOCK_NORMAL) : buffer(buf), - lockType(lock), isLocked(false), lockBuf(0), bufOfs(buf->GetOffset()), - bufStride(buf->GetElementDistance()) + lockType(lock), isLocked(false), lockBuf(0), + bufStride(buf ? buf->GetElementDistance() : 0) { } @@ -69,7 +69,8 @@ { if (!isLocked) { - lockBuf = (T*)((uint8*)buffer->Lock (lockType) + bufOfs); + lockBuf = + buffer ? ((T*)((uint8*)buffer->Lock (lockType))) : (T*)-1; isLocked = true; } return lockBuf; @@ -80,7 +81,7 @@ { if (isLocked) { - buffer->Release(); + if (buffer) buffer->Release(); isLocked = false; } } @@ -109,8 +110,11 @@ /// Retrieve number of items in buffer. size_t GetSize() const { - return buffer->GetElementCount(); + return buf ? buffer->GetElementCount() : 0; } + + /// Returns whether the buffer is valid (ie not null). + bool IsValid() const { return buffer.IsValid(); } }; #endif // __CS_CSTOOL_RBUFLOCK_H__ |