Also do other MySQL region settings related calls under m_dbLock, in common with other calls.

0.7.4-extended
Justin Clark-Casey (justincc) 2012-08-31 00:33:06 +01:00
parent d0a6d82a23
commit 0b57ddd753
1 changed files with 130 additions and 117 deletions

View File

@ -719,95 +719,99 @@ namespace OpenSim.Data.MySQL
RegionLightShareData nWP = new RegionLightShareData(); RegionLightShareData nWP = new RegionLightShareData();
nWP.OnSave += StoreRegionWindlightSettings; nWP.OnSave += StoreRegionWindlightSettings;
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) lock (m_dbLock)
{ {
dbcon.Open(); using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
string command = "select * from `regionwindlight` where region_id = ?regionID";
using (MySqlCommand cmd = new MySqlCommand(command))
{ {
cmd.Connection = dbcon; dbcon.Open();
cmd.Parameters.AddWithValue("?regionID", regionUUID.ToString()); string command = "select * from `regionwindlight` where region_id = ?regionID";
IDataReader result = ExecuteReader(cmd); using (MySqlCommand cmd = new MySqlCommand(command))
if (!result.Read())
{ {
//No result, so store our default windlight profile and return it cmd.Connection = dbcon;
nWP.regionID = regionUUID;
StoreRegionWindlightSettings(nWP); cmd.Parameters.AddWithValue("?regionID", regionUUID.ToString());
return nWP;
} IDataReader result = ExecuteReader(cmd);
else if (!result.Read())
{ {
nWP.regionID = DBGuid.FromDB(result["region_id"]); //No result, so store our default windlight profile and return it
nWP.waterColor.X = Convert.ToSingle(result["water_color_r"]); nWP.regionID = regionUUID;
nWP.waterColor.Y = Convert.ToSingle(result["water_color_g"]); StoreRegionWindlightSettings(nWP);
nWP.waterColor.Z = Convert.ToSingle(result["water_color_b"]); return nWP;
nWP.waterFogDensityExponent = Convert.ToSingle(result["water_fog_density_exponent"]); }
nWP.underwaterFogModifier = Convert.ToSingle(result["underwater_fog_modifier"]); else
nWP.reflectionWaveletScale.X = Convert.ToSingle(result["reflection_wavelet_scale_1"]); {
nWP.reflectionWaveletScale.Y = Convert.ToSingle(result["reflection_wavelet_scale_2"]); nWP.regionID = DBGuid.FromDB(result["region_id"]);
nWP.reflectionWaveletScale.Z = Convert.ToSingle(result["reflection_wavelet_scale_3"]); nWP.waterColor.X = Convert.ToSingle(result["water_color_r"]);
nWP.fresnelScale = Convert.ToSingle(result["fresnel_scale"]); nWP.waterColor.Y = Convert.ToSingle(result["water_color_g"]);
nWP.fresnelOffset = Convert.ToSingle(result["fresnel_offset"]); nWP.waterColor.Z = Convert.ToSingle(result["water_color_b"]);
nWP.refractScaleAbove = Convert.ToSingle(result["refract_scale_above"]); nWP.waterFogDensityExponent = Convert.ToSingle(result["water_fog_density_exponent"]);
nWP.refractScaleBelow = Convert.ToSingle(result["refract_scale_below"]); nWP.underwaterFogModifier = Convert.ToSingle(result["underwater_fog_modifier"]);
nWP.blurMultiplier = Convert.ToSingle(result["blur_multiplier"]); nWP.reflectionWaveletScale.X = Convert.ToSingle(result["reflection_wavelet_scale_1"]);
nWP.bigWaveDirection.X = Convert.ToSingle(result["big_wave_direction_x"]); nWP.reflectionWaveletScale.Y = Convert.ToSingle(result["reflection_wavelet_scale_2"]);
nWP.bigWaveDirection.Y = Convert.ToSingle(result["big_wave_direction_y"]); nWP.reflectionWaveletScale.Z = Convert.ToSingle(result["reflection_wavelet_scale_3"]);
nWP.littleWaveDirection.X = Convert.ToSingle(result["little_wave_direction_x"]); nWP.fresnelScale = Convert.ToSingle(result["fresnel_scale"]);
nWP.littleWaveDirection.Y = Convert.ToSingle(result["little_wave_direction_y"]); nWP.fresnelOffset = Convert.ToSingle(result["fresnel_offset"]);
UUID.TryParse(result["normal_map_texture"].ToString(), out nWP.normalMapTexture); nWP.refractScaleAbove = Convert.ToSingle(result["refract_scale_above"]);
nWP.horizon.X = Convert.ToSingle(result["horizon_r"]); nWP.refractScaleBelow = Convert.ToSingle(result["refract_scale_below"]);
nWP.horizon.Y = Convert.ToSingle(result["horizon_g"]); nWP.blurMultiplier = Convert.ToSingle(result["blur_multiplier"]);
nWP.horizon.Z = Convert.ToSingle(result["horizon_b"]); nWP.bigWaveDirection.X = Convert.ToSingle(result["big_wave_direction_x"]);
nWP.horizon.W = Convert.ToSingle(result["horizon_i"]); nWP.bigWaveDirection.Y = Convert.ToSingle(result["big_wave_direction_y"]);
nWP.hazeHorizon = Convert.ToSingle(result["haze_horizon"]); nWP.littleWaveDirection.X = Convert.ToSingle(result["little_wave_direction_x"]);
nWP.blueDensity.X = Convert.ToSingle(result["blue_density_r"]); nWP.littleWaveDirection.Y = Convert.ToSingle(result["little_wave_direction_y"]);
nWP.blueDensity.Y = Convert.ToSingle(result["blue_density_g"]); UUID.TryParse(result["normal_map_texture"].ToString(), out nWP.normalMapTexture);
nWP.blueDensity.Z = Convert.ToSingle(result["blue_density_b"]); nWP.horizon.X = Convert.ToSingle(result["horizon_r"]);
nWP.blueDensity.W = Convert.ToSingle(result["blue_density_i"]); nWP.horizon.Y = Convert.ToSingle(result["horizon_g"]);
nWP.hazeDensity = Convert.ToSingle(result["haze_density"]); nWP.horizon.Z = Convert.ToSingle(result["horizon_b"]);
nWP.densityMultiplier = Convert.ToSingle(result["density_multiplier"]); nWP.horizon.W = Convert.ToSingle(result["horizon_i"]);
nWP.distanceMultiplier = Convert.ToSingle(result["distance_multiplier"]); nWP.hazeHorizon = Convert.ToSingle(result["haze_horizon"]);
nWP.maxAltitude = Convert.ToUInt16(result["max_altitude"]); nWP.blueDensity.X = Convert.ToSingle(result["blue_density_r"]);
nWP.sunMoonColor.X = Convert.ToSingle(result["sun_moon_color_r"]); nWP.blueDensity.Y = Convert.ToSingle(result["blue_density_g"]);
nWP.sunMoonColor.Y = Convert.ToSingle(result["sun_moon_color_g"]); nWP.blueDensity.Z = Convert.ToSingle(result["blue_density_b"]);
nWP.sunMoonColor.Z = Convert.ToSingle(result["sun_moon_color_b"]); nWP.blueDensity.W = Convert.ToSingle(result["blue_density_i"]);
nWP.sunMoonColor.W = Convert.ToSingle(result["sun_moon_color_i"]); nWP.hazeDensity = Convert.ToSingle(result["haze_density"]);
nWP.sunMoonPosition = Convert.ToSingle(result["sun_moon_position"]); nWP.densityMultiplier = Convert.ToSingle(result["density_multiplier"]);
nWP.ambient.X = Convert.ToSingle(result["ambient_r"]); nWP.distanceMultiplier = Convert.ToSingle(result["distance_multiplier"]);
nWP.ambient.Y = Convert.ToSingle(result["ambient_g"]); nWP.maxAltitude = Convert.ToUInt16(result["max_altitude"]);
nWP.ambient.Z = Convert.ToSingle(result["ambient_b"]); nWP.sunMoonColor.X = Convert.ToSingle(result["sun_moon_color_r"]);
nWP.ambient.W = Convert.ToSingle(result["ambient_i"]); nWP.sunMoonColor.Y = Convert.ToSingle(result["sun_moon_color_g"]);
nWP.eastAngle = Convert.ToSingle(result["east_angle"]); nWP.sunMoonColor.Z = Convert.ToSingle(result["sun_moon_color_b"]);
nWP.sunGlowFocus = Convert.ToSingle(result["sun_glow_focus"]); nWP.sunMoonColor.W = Convert.ToSingle(result["sun_moon_color_i"]);
nWP.sunGlowSize = Convert.ToSingle(result["sun_glow_size"]); nWP.sunMoonPosition = Convert.ToSingle(result["sun_moon_position"]);
nWP.sceneGamma = Convert.ToSingle(result["scene_gamma"]); nWP.ambient.X = Convert.ToSingle(result["ambient_r"]);
nWP.starBrightness = Convert.ToSingle(result["star_brightness"]); nWP.ambient.Y = Convert.ToSingle(result["ambient_g"]);
nWP.cloudColor.X = Convert.ToSingle(result["cloud_color_r"]); nWP.ambient.Z = Convert.ToSingle(result["ambient_b"]);
nWP.cloudColor.Y = Convert.ToSingle(result["cloud_color_g"]); nWP.ambient.W = Convert.ToSingle(result["ambient_i"]);
nWP.cloudColor.Z = Convert.ToSingle(result["cloud_color_b"]); nWP.eastAngle = Convert.ToSingle(result["east_angle"]);
nWP.cloudColor.W = Convert.ToSingle(result["cloud_color_i"]); nWP.sunGlowFocus = Convert.ToSingle(result["sun_glow_focus"]);
nWP.cloudXYDensity.X = Convert.ToSingle(result["cloud_x"]); nWP.sunGlowSize = Convert.ToSingle(result["sun_glow_size"]);
nWP.cloudXYDensity.Y = Convert.ToSingle(result["cloud_y"]); nWP.sceneGamma = Convert.ToSingle(result["scene_gamma"]);
nWP.cloudXYDensity.Z = Convert.ToSingle(result["cloud_density"]); nWP.starBrightness = Convert.ToSingle(result["star_brightness"]);
nWP.cloudCoverage = Convert.ToSingle(result["cloud_coverage"]); nWP.cloudColor.X = Convert.ToSingle(result["cloud_color_r"]);
nWP.cloudScale = Convert.ToSingle(result["cloud_scale"]); nWP.cloudColor.Y = Convert.ToSingle(result["cloud_color_g"]);
nWP.cloudDetailXYDensity.X = Convert.ToSingle(result["cloud_detail_x"]); nWP.cloudColor.Z = Convert.ToSingle(result["cloud_color_b"]);
nWP.cloudDetailXYDensity.Y = Convert.ToSingle(result["cloud_detail_y"]); nWP.cloudColor.W = Convert.ToSingle(result["cloud_color_i"]);
nWP.cloudDetailXYDensity.Z = Convert.ToSingle(result["cloud_detail_density"]); nWP.cloudXYDensity.X = Convert.ToSingle(result["cloud_x"]);
nWP.cloudScrollX = Convert.ToSingle(result["cloud_scroll_x"]); nWP.cloudXYDensity.Y = Convert.ToSingle(result["cloud_y"]);
nWP.cloudScrollXLock = Convert.ToBoolean(result["cloud_scroll_x_lock"]); nWP.cloudXYDensity.Z = Convert.ToSingle(result["cloud_density"]);
nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]); nWP.cloudCoverage = Convert.ToSingle(result["cloud_coverage"]);
nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]); nWP.cloudScale = Convert.ToSingle(result["cloud_scale"]);
nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]); nWP.cloudDetailXYDensity.X = Convert.ToSingle(result["cloud_detail_x"]);
nWP.valid = true; nWP.cloudDetailXYDensity.Y = Convert.ToSingle(result["cloud_detail_y"]);
nWP.cloudDetailXYDensity.Z = Convert.ToSingle(result["cloud_detail_density"]);
nWP.cloudScrollX = Convert.ToSingle(result["cloud_scroll_x"]);
nWP.cloudScrollXLock = Convert.ToBoolean(result["cloud_scroll_x_lock"]);
nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]);
nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]);
nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]);
nWP.valid = true;
}
} }
} }
} }
return nWP; return nWP;
} }
@ -978,26 +982,29 @@ namespace OpenSim.Data.MySQL
#region RegionEnvironmentSettings #region RegionEnvironmentSettings
public string LoadRegionEnvironmentSettings(UUID regionUUID) public string LoadRegionEnvironmentSettings(UUID regionUUID)
{ {
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) lock (m_dbLock)
{ {
dbcon.Open(); using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
string command = "select * from `regionenvironment` where region_id = ?region_id";
using (MySqlCommand cmd = new MySqlCommand(command))
{ {
cmd.Connection = dbcon; dbcon.Open();
cmd.Parameters.AddWithValue("?region_id", regionUUID.ToString()); string command = "select * from `regionenvironment` where region_id = ?region_id";
IDataReader result = ExecuteReader(cmd); using (MySqlCommand cmd = new MySqlCommand(command))
if (!result.Read())
{ {
return String.Empty; cmd.Connection = dbcon;
}
else cmd.Parameters.AddWithValue("?region_id", regionUUID.ToString());
{
return Convert.ToString(result["llsd_settings"]); IDataReader result = ExecuteReader(cmd);
if (!result.Read())
{
return String.Empty;
}
else
{
return Convert.ToString(result["llsd_settings"]);
}
} }
} }
} }
@ -1005,33 +1012,39 @@ namespace OpenSim.Data.MySQL
public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings) public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings)
{ {
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) lock (m_dbLock)
{ {
dbcon.Open(); using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
using (MySqlCommand cmd = dbcon.CreateCommand())
{ {
cmd.CommandText = "REPLACE INTO `regionenvironment` (`region_id`, `llsd_settings`) VALUES (?region_id, ?llsd_settings)"; dbcon.Open();
cmd.Parameters.AddWithValue("region_id", regionUUID); using (MySqlCommand cmd = dbcon.CreateCommand())
cmd.Parameters.AddWithValue("llsd_settings", settings); {
cmd.CommandText = "REPLACE INTO `regionenvironment` (`region_id`, `llsd_settings`) VALUES (?region_id, ?llsd_settings)";
ExecuteNonQuery(cmd); cmd.Parameters.AddWithValue("region_id", regionUUID);
cmd.Parameters.AddWithValue("llsd_settings", settings);
ExecuteNonQuery(cmd);
}
} }
} }
} }
public void RemoveRegionEnvironmentSettings(UUID regionUUID) public void RemoveRegionEnvironmentSettings(UUID regionUUID)
{ {
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) lock (m_dbLock)
{ {
dbcon.Open(); using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
using (MySqlCommand cmd = dbcon.CreateCommand())
{ {
cmd.CommandText = "delete from `regionenvironment` where region_id = ?region_id"; dbcon.Open();
cmd.Parameters.AddWithValue("?region_id", regionUUID.ToString());
ExecuteNonQuery(cmd); using (MySqlCommand cmd = dbcon.CreateCommand())
{
cmd.CommandText = "delete from `regionenvironment` where region_id = ?region_id";
cmd.Parameters.AddWithValue("?region_id", regionUUID.ToString());
ExecuteNonQuery(cmd);
}
} }
} }
} }