Removed a couple of unnecessary includes

(Hopefully) patched a crash under the BApplication Quit2 test
Speedup for CursorManager::RemoveAppCursors


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9216 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm 2004-10-05 23:00:47 +00:00
parent 601a55f349
commit 76d4213d60
7 changed files with 35 additions and 13 deletions

View File

@ -153,23 +153,18 @@ void CursorManager::DeleteCursor(int32 token)
\brief Removes and deletes all of an application's cursors
\param signature Signature to which the cursors belong
*/
void CursorManager::RemoveAppCursors(const char *signature)
void CursorManager::RemoveAppCursors(team_id team)
{
// OPTIMIZATION: For an optimization, it perhaps may be wise down
// the road to replace the ServerCursor's app signature with a
// pointer to its application and compare ServerApp pointers instead.
Lock();
ServerCursor *temp;
for(int32 i=0; i<fCursorList->CountItems();i++)
{
temp=(ServerCursor*)fCursorList->ItemAt(i);
if(temp && temp->GetAppSignature() &&
strcmp(signature, temp->GetAppSignature())==0)
if(temp && temp->OwningTeam()==team)
{
fCursorList->RemoveItem(i);
delete temp;
break;
}
}
Unlock();

View File

@ -50,7 +50,7 @@ public:
~CursorManager(void);
int32 AddCursor(ServerCursor *sc);
void DeleteCursor(int32 token);
void RemoveAppCursors(const char *signature);
void RemoveAppCursors(team_id team);
void ShowCursor(void);
void HideCursor(void);
void ObscureCursor(void);

View File

@ -98,10 +98,18 @@ ServerApp::ServerApp(port_id sendport, port_id rcvport, port_id clientLooperPort
fBitmapList=new BList(0);
fPictureList=new BList(0);
fIsActive=false;
char *dummy;
fSharedMem=create_area("rw_shared_area",(void**)&dummy,B_ANY_ADDRESS,4096,B_NO_LOCK,
B_READ_AREA|B_WRITE_AREA);
if(fSharedMem<0)
printf("PANIC: Couldn't create shared app_server area!\n");
ServerCursor *defaultc=cursormanager->GetCursor(B_CURSOR_DEFAULT);
fAppCursor=(defaultc)?new ServerCursor(defaultc):NULL;
fAppCursor->SetOwningTeam(fClientTeamID);
fLockSem=create_sem(1,"ServerApp sem");
// Does this even belong here any more? --DW
@ -148,7 +156,7 @@ ServerApp::~ServerApp(void)
delete fAppCursor;
cursormanager->RemoveAppCursors(fSignature.String());
cursormanager->RemoveAppCursors(fClientTeamID);
delete_sem(fLockSem);
STRACE(("#ServerApp %s:~ServerApp()\n",fSignature.String()));
@ -157,6 +165,7 @@ ServerApp::~ServerApp(void)
thread_info info;
if(get_thread_info(fMonitorThreadID,&info)==B_OK)
kill_thread(fMonitorThreadID);
delete_area(fSharedMem);
}
/*!
@ -367,7 +376,7 @@ void ServerApp::_DispatchMessage(int32 code, BPortLink& msg)
}
case AS_UPDATE_COLORS:
{
// Eventually we will have windows which will notify their children of changes in
// NOTE: R2: Eventually we will have windows which will notify their children of changes in
// system colors
/* STRACE(("ServerApp %s: Received global UI color update notification\n",fSignature.String()));
@ -386,7 +395,7 @@ void ServerApp::_DispatchMessage(int32 code, BPortLink& msg)
}
case AS_UPDATE_FONTS:
{
// Eventually we will have windows which will notify their children of changes in
// NOTE: R2: Eventually we will have windows which will notify their children of changes in
// system fonts
/* STRACE(("ServerApp %s: Received global font update notification\n",fSignature.String()));
@ -403,6 +412,20 @@ void ServerApp::_DispatchMessage(int32 code, BPortLink& msg)
}
*/ break;
}
case AS_ACQUIRE_SERVERMEM:
{
// Received from a ServerMemIO object requesting operating memory
// Attached Data:
// 1) size_t requested size
// TODO: Implement AS_ACQUIRE_SERVERMEM
break;
}
case AS_RELEASE_SERVERMEM:
{
// TODO: Implement AS_RELEASE_SERVERMEM
break;
}
case AS_UPDATE_DECORATOR:
{
STRACE(("ServerApp %s: Received decorator update notification\n",fSignature.String()));
@ -683,6 +706,7 @@ void ServerApp::_DispatchMessage(int32 code, BPortLink& msg)
cursormanager->DeleteCursor(fAppCursor->ID());
fAppCursor=new ServerCursor(cdata);
fAppCursor->SetOwningTeam(fClientTeamID);
fAppCursor->SetAppSignature(fSignature.String());
cursormanager->AddCursor(fAppCursor);
cursormanager->SetCursor(fAppCursor->ID());
@ -730,6 +754,7 @@ void ServerApp::_DispatchMessage(int32 code, BPortLink& msg)
msg.Read<int32>(&replyport);
fAppCursor=new ServerCursor(cdata);
fAppCursor->SetOwningTeam(fClientTeamID);
fAppCursor->SetAppSignature(fSignature.String());
cursormanager->AddCursor(fAppCursor);

View File

@ -103,6 +103,7 @@ protected:
bool fCursorHidden;
bool fIsActive;
int32 fHandlerToken;
area_id fSharedMem;
};
#endif

View File

@ -40,6 +40,7 @@ ServerCursor::ServerCursor(BRect r, color_space cspace, int32 flags, BPoint hots
{
fHotSpot=hotspot;
fHotSpot.ConstrainTo(Bounds());
fOwningTeam=-1;
_AllocateBuffer();
}
@ -59,6 +60,7 @@ ServerCursor::ServerCursor(int8 *data)
if(data)
{
fInitialized=true;
fOwningTeam=-1;
uint32 black=0xFF000000,
white=0xFFFFFFFF,
*bmppos;
@ -113,6 +115,7 @@ ServerCursor::ServerCursor(const ServerCursor *cursor)
{
_AllocateBuffer();
fInitialized=true;
fOwningTeam=-1;
if(cursor)
{

View File

@ -34,7 +34,6 @@
#include <Message.h>
#include <GraphicsDefs.h>
#include <PortLink.h>
#include <Session.h>
#include "Desktop.h"
#include "AppServer.h"
#include "Layer.h"

View File

@ -29,7 +29,6 @@
#include <String.h>
#include <Locker.h>
#include <Debug.h>
#include <TokenSpace.h>
#include "PortLink.h"
#include "View.h" // for mouse button defines
#include "ServerWindow.h"