diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteRegionData.cs | 58 |
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; | |||
31 | using System.Drawing; | 31 | using System.Drawing; |
32 | using System.IO; | 32 | using System.IO; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Xml; | ||
34 | using log4net; | 35 | using log4net; |
35 | using Mono.Data.Sqlite; | 36 | using Mono.Data.Sqlite; |
36 | using OpenMetaverse; | 37 | using 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 | ||