diff options
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/Monitoring/Watchdog.cs | 6 | ||||
-rw-r--r-- | OpenSim/Framework/PrimitiveBaseShape.cs | 43 |
2 files changed, 30 insertions, 19 deletions
diff --git a/OpenSim/Framework/Monitoring/Watchdog.cs b/OpenSim/Framework/Monitoring/Watchdog.cs index 5fb725c..9cac451 100644 --- a/OpenSim/Framework/Monitoring/Watchdog.cs +++ b/OpenSim/Framework/Monitoring/Watchdog.cs | |||
@@ -254,14 +254,12 @@ namespace OpenSim.Framework.Monitoring | |||
254 | 254 | ||
255 | twi.Cleanup(); | 255 | twi.Cleanup(); |
256 | m_threads.Remove(threadID); | 256 | m_threads.Remove(threadID); |
257 | |||
258 | return true; | 257 | return true; |
259 | } | 258 | } |
260 | else | 259 | else |
261 | { | 260 | { |
262 | m_log.WarnFormat( | 261 | m_log.WarnFormat( |
263 | "[WATCHDOG]: Requested to remove thread with ID {0} but this is not being monitored", threadID); | 262 | "[WATCHDOG]: Requested to remove thread with ID {0} but this is not being monitored", threadID); |
264 | |||
265 | return false; | 263 | return false; |
266 | } | 264 | } |
267 | } | 265 | } |
@@ -360,7 +358,7 @@ namespace OpenSim.Framework.Monitoring | |||
360 | List<ThreadWatchdogInfo> callbackInfos = null; | 358 | List<ThreadWatchdogInfo> callbackInfos = null; |
361 | List<ThreadWatchdogInfo> threadsToRemove = null; | 359 | List<ThreadWatchdogInfo> threadsToRemove = null; |
362 | 360 | ||
363 | const ThreadState thgone = ThreadState.Stopped | ThreadState.Aborted | ThreadState.AbortRequested; | 361 | const ThreadState thgone = ThreadState.Stopped; |
364 | 362 | ||
365 | lock (m_threads) | 363 | lock (m_threads) |
366 | { | 364 | { |
@@ -368,7 +366,7 @@ namespace OpenSim.Framework.Monitoring | |||
368 | { | 366 | { |
369 | if(!m_enabled) | 367 | if(!m_enabled) |
370 | return; | 368 | return; |
371 | if(!threadInfo.Thread.IsAlive || (threadInfo.Thread.ThreadState & thgone) != 0) | 369 | if((threadInfo.Thread.ThreadState & thgone) != 0) |
372 | { | 370 | { |
373 | if(threadsToRemove == null) | 371 | if(threadsToRemove == null) |
374 | threadsToRemove = new List<ThreadWatchdogInfo>(); | 372 | threadsToRemove = new List<ThreadWatchdogInfo>(); |
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index a830551..96d78d3 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -1580,35 +1580,48 @@ namespace OpenSim.Framework | |||
1580 | { | 1580 | { |
1581 | MediaList ml = new MediaList(); | 1581 | MediaList ml = new MediaList(); |
1582 | ml.ReadXml(rawXml); | 1582 | ml.ReadXml(rawXml); |
1583 | if(ml.Count == 0) | ||
1584 | return null; | ||
1583 | return ml; | 1585 | return ml; |
1584 | } | 1586 | } |
1585 | 1587 | ||
1586 | public void ReadXml(string rawXml) | 1588 | public void ReadXml(string rawXml) |
1587 | { | 1589 | { |
1588 | using (StringReader sr = new StringReader(rawXml)) | 1590 | try |
1589 | { | 1591 | { |
1590 | using (XmlTextReader xtr = new XmlTextReader(sr)) | 1592 | using (StringReader sr = new StringReader(rawXml)) |
1591 | { | 1593 | { |
1592 | xtr.MoveToContent(); | 1594 | using (XmlTextReader xtr = new XmlTextReader(sr)) |
1595 | { | ||
1596 | xtr.MoveToContent(); | ||
1593 | 1597 | ||
1594 | string type = xtr.GetAttribute("type"); | 1598 | string type = xtr.GetAttribute("type"); |
1595 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); | 1599 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); |
1596 | 1600 | ||
1597 | if (type != MEDIA_TEXTURE_TYPE) | 1601 | if (type != MEDIA_TEXTURE_TYPE) |
1598 | return; | 1602 | return; |
1599 | 1603 | ||
1600 | xtr.ReadStartElement("OSMedia"); | 1604 | xtr.ReadStartElement("OSMedia"); |
1605 | OSD osdp = OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | ||
1606 | if(osdp == null || !(osdp is OSDArray)) | ||
1607 | return; | ||
1601 | 1608 | ||
1602 | OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | 1609 | OSDArray osdMeArray = osdp as OSDArray; |
1603 | foreach (OSD osdMe in osdMeArray) | 1610 | if(osdMeArray.Count == 0) |
1604 | { | 1611 | return; |
1605 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1606 | Add(me); | ||
1607 | } | ||
1608 | 1612 | ||
1609 | xtr.ReadEndElement(); | 1613 | foreach (OSD osdMe in osdMeArray) |
1614 | { | ||
1615 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1616 | Add(me); | ||
1617 | } | ||
1618 | } | ||
1610 | } | 1619 | } |
1611 | } | 1620 | } |
1621 | catch | ||
1622 | { | ||
1623 | m_log.Debug("PrimitiveBaseShape] error decoding MOAP xml" ); | ||
1624 | } | ||
1612 | } | 1625 | } |
1613 | 1626 | ||
1614 | public void ReadXml(XmlReader reader) | 1627 | public void ReadXml(XmlReader reader) |