Merge commit 'e449950030decf7e65e7d9b334ddaed25c1bd629' into careminster

avinationmerge
Melanie 2013-06-06 03:04:47 +01:00
commit ea9e1d1a1e
4 changed files with 68 additions and 34 deletions

View File

@ -169,6 +169,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
void HandleOnMakeRootAgent (ScenePresence obj) void HandleOnMakeRootAgent (ScenePresence obj)
{ {
if(obj.PresenceType == PresenceType.Npc)
return;
GetImageAssets(((IScenePresence)obj).UUID); GetImageAssets(((IScenePresence)obj).UUID);
} }
@ -329,11 +332,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
if(!classifiedCache.ContainsKey(cid)) if(!classifiedCache.ContainsKey(cid))
{ {
classifiedCache.Add(cid,creatorId); lock(classifiedCache)
classifiedInterest.Add(cid, 0); classifiedCache.Add(cid,creatorId);
lock(classifiedInterest)
classifiedInterest.Add(cid, 0);
} }
classifiedInterest[cid] ++; lock(classifiedInterest)
classifiedInterest[cid] ++;
} }
remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds); remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds);
@ -349,20 +355,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
{ {
target = classifiedCache[queryClassifiedID]; target = classifiedCache[queryClassifiedID];
if(classifiedInterest[queryClassifiedID] -- == 0) lock(classifiedInterest)
classifiedInterest[queryClassifiedID] --;
if(classifiedInterest[queryClassifiedID] == 0)
{ {
lock(classifiedInterest)
classifiedInterest.Remove(queryClassifiedID);
lock(classifiedCache) lock(classifiedCache)
{
lock(classifiedInterest)
{
classifiedInterest.Remove(queryClassifiedID);
}
classifiedCache.Remove(queryClassifiedID); classifiedCache.Remove(queryClassifiedID);
}
} }
} }
string serverURI = string.Empty; string serverURI = string.Empty;
bool foreign = GetUserProfileServerURI(target, out serverURI); bool foreign = GetUserProfileServerURI(target, out serverURI);

View File

@ -360,7 +360,7 @@ public static class BSParam
new ParameterDefn<bool>("UseSeparatePhysicsThread", "If 'true', the physics engine runs independent from the simulator heartbeat", new ParameterDefn<bool>("UseSeparatePhysicsThread", "If 'true', the physics engine runs independent from the simulator heartbeat",
false ), false ),
new ParameterDefn<float>("PhysicsTimeStep", "If separate thread, seconds to simulate each interval", new ParameterDefn<float>("PhysicsTimeStep", "If separate thread, seconds to simulate each interval",
0.1f ), 0.089f ),
new ParameterDefn<bool>("MeshSculptedPrim", "Whether to create meshes for sculpties", new ParameterDefn<bool>("MeshSculptedPrim", "Whether to create meshes for sculpties",
true, true,

View File

@ -389,9 +389,21 @@ public class BSShapeMesh : BSShape
} }
public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim) public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim)
{ {
// Another reference to this shape is just counted. BSShape ret = null;
IncrementReference(); // If the underlying shape is native, the actual shape has not been build (waiting for asset)
return this; // and we must create a copy of the native shape since they are never shared.
if (physShapeInfo.HasPhysicalShape && physShapeInfo.isNativeShape)
{
// TODO: decide when the native shapes should be freed. Check in Dereference?
ret = BSShapeNative.GetReference(pPhysicsScene, pPrim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
}
else
{
// Another reference to this shape is just counted.
IncrementReference();
ret = this;
}
return ret;
} }
public override void Dereference(BSScene physicsScene) public override void Dereference(BSScene physicsScene)
{ {
@ -562,9 +574,21 @@ public class BSShapeHull : BSShape
} }
public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim) public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim)
{ {
// Another reference to this shape is just counted. BSShape ret = null;
IncrementReference(); // If the underlying shape is native, the actual shape has not been build (waiting for asset)
return this; // and we must create a copy of the native shape since they are never shared.
if (physShapeInfo.HasPhysicalShape && physShapeInfo.isNativeShape)
{
// TODO: decide when the native shapes should be freed. Check in Dereference?
ret = BSShapeNative.GetReference(pPhysicsScene, pPrim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
}
else
{
// Another reference to this shape is just counted.
IncrementReference();
ret = this;
}
return ret;
} }
public override void Dereference(BSScene physicsScene) public override void Dereference(BSScene physicsScene)
{ {
@ -1077,12 +1101,23 @@ public class BSShapeGImpact : BSShape
(w, iC, i, vC, v) => physicsScene.PE.CreateGImpactShape(w, iC, i, vC, v) ); (w, iC, i, vC, v) => physicsScene.PE.CreateGImpactShape(w, iC, i, vC, v) );
} }
public override BSShape GetReference(BSScene physicsScene, BSPhysObject prim) public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim)
{ {
// Calling this reference means we want another handle to an existing shape BSShape ret = null;
// (usually linksets) so return this copy. // If the underlying shape is native, the actual shape has not been build (waiting for asset)
IncrementReference(); // and we must create a copy of the native shape since they are never shared.
return this; if (physShapeInfo.HasPhysicalShape && physShapeInfo.isNativeShape)
{
// TODO: decide when the native shapes should be freed. Check in Dereference?
ret = BSShapeNative.GetReference(pPhysicsScene, pPrim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
}
else
{
// Another reference to this shape is just counted.
IncrementReference();
ret = this;
}
return ret;
} }
// Dereferencing a compound shape releases the hold on all the child shapes. // Dereferencing a compound shape releases the hold on all the child shapes.
public override void Dereference(BSScene physicsScene) public override void Dereference(BSScene physicsScene)

View File

@ -106,11 +106,6 @@ namespace OpenSim.Server.Handlers.Profiles
Server.AddJsonRPCHandler("avatar_properties_update", handler.AvatarPropertiesUpdate); Server.AddJsonRPCHandler("avatar_properties_update", handler.AvatarPropertiesUpdate);
Server.AddJsonRPCHandler("avatar_interests_update", handler.AvatarInterestsUpdate); Server.AddJsonRPCHandler("avatar_interests_update", handler.AvatarInterestsUpdate);
Server.AddJsonRPCHandler("image_assets_request", handler.AvatarImageAssetsRequest); Server.AddJsonRPCHandler("image_assets_request", handler.AvatarImageAssetsRequest);
// Server.AddJsonRPCHandler("user_preferences_request", handler.UserPreferencesRequest);
// Server.AddJsonRPCHandler("user_preferences_update", handler.UserPreferencesUpdate);
// Server.AddJsonRPCHandler("user_account_create", handler.UserAccountCreate);
// Server.AddJsonRPCHandler("user_account_auth", handler.UserAccountAuth);
// Server.AddJsonRPCHandler("user_account_test", handler.UserAccountTest);
Server.AddJsonRPCHandler("user_data_request", handler.RequestUserAppData); Server.AddJsonRPCHandler("user_data_request", handler.RequestUserAppData);
Server.AddJsonRPCHandler("user_data_update", handler.UpdateUserAppData); Server.AddJsonRPCHandler("user_data_update", handler.UpdateUserAppData);
} }