Merge branch 'master' into careminster

avinationmerge
Melanie 2013-08-18 03:00:32 +01:00
commit aa7f4215a9
1 changed files with 16 additions and 4 deletions

View File

@ -411,6 +411,8 @@ namespace OpenSim.Region.Framework.Scenes
// itemUpd.NextPermissions, itemUpd.GroupPermissions, itemUpd.EveryOnePermissions, item.Flags, // itemUpd.NextPermissions, itemUpd.GroupPermissions, itemUpd.EveryOnePermissions, item.Flags,
// item.NextPermissions, item.GroupPermissions, item.EveryOnePermissions, item.CurrentPermissions); // item.NextPermissions, item.GroupPermissions, item.EveryOnePermissions, item.CurrentPermissions);
bool sendUpdate = false;
if (itemUpd.NextPermissions != 0) // Use this to determine validity. Can never be 0 if valid if (itemUpd.NextPermissions != 0) // Use this to determine validity. Can never be 0 if valid
{ {
// Create a set of base permissions that will not include export if the user // Create a set of base permissions that will not include export if the user
@ -484,11 +486,13 @@ namespace OpenSim.Region.Framework.Scenes
item.SalePrice = itemUpd.SalePrice; item.SalePrice = itemUpd.SalePrice;
item.SaleType = itemUpd.SaleType; item.SaleType = itemUpd.SaleType;
InventoryService.UpdateItem(item); if (item.InvType == (int)InventoryType.Wearable && (item.Flags & 0xf) == 0 && (itemUpd.Flags & 0xf) != 0)
{
item.Flags = (uint)(item.Flags & 0xfffffff0) | (itemUpd.Flags & 0xf);
sendUpdate = true;
}
// We cannot send out a bulk update here, since this will cause editing of clothing to start InventoryService.UpdateItem(item);
// failing frequently. Possibly this is a race with a separate transaction that uploads the asset.
// remoteClient.SendBulkUpdateInventory(item);
} }
if (UUID.Zero != transactionID) if (UUID.Zero != transactionID)
@ -498,6 +502,14 @@ namespace OpenSim.Region.Framework.Scenes
AgentTransactionsModule.HandleItemUpdateFromTransaction(remoteClient, transactionID, item); AgentTransactionsModule.HandleItemUpdateFromTransaction(remoteClient, transactionID, item);
} }
} }
else
{
// This MAY be problematic, if it is, another solution
// needs to be found. If inventory item flags are updated
// the viewer's notion of the item needs to be refreshed.
if (sendUpdate)
remoteClient.SendBulkUpdateInventory(item);
}
} }
else else
{ {