aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/SQLite/SQLiteRegionData.cs58
1 files changed, 43 insertions, 15 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs
index 7acbd22..b564419 100644
--- a/OpenSim/Data/SQLite/SQLiteRegionData.cs
+++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs
@@ -31,6 +31,7 @@ using System.Data;
31using System.Drawing; 31using System.Drawing;
32using System.IO; 32using System.IO;
33using System.Reflection; 33using System.Reflection;
34using System.Xml;
34using log4net; 35using log4net;
35using Mono.Data.Sqlite; 36using Mono.Data.Sqlite;
36using OpenMetaverse; 37using OpenMetaverse;
@@ -1862,17 +1863,26 @@ namespace OpenSim.Data.SQLite
1862 1863
1863 if (!(row["Media"] is System.DBNull)) 1864 if (!(row["Media"] is System.DBNull))
1864 { 1865 {
1865 string rawMeArray = (string)row["Media"]; 1866 using (StringReader sr = new StringReader((string)row["Media"]))
1866 OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(rawMeArray);
1867
1868 List<MediaEntry> mediaEntries = new List<MediaEntry>();
1869 foreach (OSD osdMe in osdMeArray)
1870 { 1867 {
1871 MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); 1868 using (XmlTextReader xtr = new XmlTextReader(sr))
1872 mediaEntries.Add(me); 1869 {
1870 xtr.ReadStartElement("osmedia");
1871
1872 OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml());
1873
1874 List<MediaEntry> mediaEntries = new List<MediaEntry>();
1875 foreach (OSD osdMe in osdMeArray)
1876 {
1877 MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry());
1878 mediaEntries.Add(me);
1879 }
1880
1881 s.Media = mediaEntries;
1882
1883 xtr.ReadEndElement();
1884 }
1873 } 1885 }
1874
1875 s.Media = mediaEntries;
1876 } 1886 }
1877 1887
1878 return s; 1888 return s;
@@ -1921,14 +1931,32 @@ namespace OpenSim.Data.SQLite
1921 1931
1922 if (null != s.Media) 1932 if (null != s.Media)
1923 { 1933 {
1924 OSDArray meArray = new OSDArray(); 1934 using (StringWriter sw = new StringWriter())
1925 foreach (MediaEntry me in s.Media)
1926 { 1935 {
1927 OSD osd = (null == me ? new OSD() : me.GetOSD()); 1936 using (XmlTextWriter xtw = new XmlTextWriter(sw))
1928 meArray.Add(osd); 1937 {
1938 xtw.WriteStartElement("osmedia");
1939 xtw.WriteAttributeString("type", "sl");
1940 xtw.WriteAttributeString("major_version", "0");
1941 xtw.WriteAttributeString("minor_version", "1");
1942
1943 OSDArray meArray = new OSDArray();
1944 foreach (MediaEntry me in s.Media)
1945 {
1946 OSD osd = (null == me ? new OSD() : me.GetOSD());
1947 meArray.Add(osd);
1948 }
1949
1950 xtw.WriteStartElement("osdata");
1951 xtw.WriteRaw(OSDParser.SerializeLLSDXmlString(meArray));
1952 xtw.WriteEndElement();
1953
1954 xtw.WriteEndElement();
1955
1956 xtw.Flush();
1957 row["Media"] = sw.ToString();
1958 }
1929 } 1959 }
1930
1931 row["Media"] = OSDParser.SerializeLLSDXmlString(meArray);
1932 } 1960 }
1933 } 1961 }
1934 1962