RenderingEnabled = false;\r
Application.Idle -= new EventHandler(Application_Idle);\r
\r
- PendingTextures.Close();\r
+ if (!PendingTextures.Closed)\r
+ {\r
+ TextureThreadContextReady.Reset();\r
+ TextureThreadRunning = false;\r
+ PendingTextures.Close();\r
+ TextureThreadContextReady.WaitOne(5000, false);\r
+ }\r
\r
if (chatOverlay != null)\r
{\r
Client.Avatars.AvatarAppearance -= new EventHandler<AvatarAppearanceEventArgs>(Avatars_AvatarAppearance);\r
Client.Appearance.AppearanceSet -= new EventHandler<AppearanceSetEventArgs>(Appearance_AppearanceSet);\r
\r
- PendingTasks.Close();\r
+ if (!PendingTasks.Closed)\r
+ {\r
+ PendingTasks.Close();\r
+ }\r
+\r
if (genericTaskThread != null)\r
{\r
genericTaskThread.Join(2000);\r
\r
if (glControl != null)\r
{\r
+ glControl_UnhookEvents();\r
+ glControl.MakeCurrent();\r
glControl.Dispose();\r
}\r
glControl = null;\r
glControl.BringToFront();\r
}\r
\r
- void glControl_Disposed(object sender, EventArgs e)\r
+ void glControl_UnhookEvents()\r
{\r
- TextureThreadRunning = false;\r
- PendingTextures.Close();\r
glControl.Paint -= glControl_Paint;\r
glControl.Resize -= glControl_Resize;\r
glControl.MouseDown -= glControl_MouseDown;\r
glControl.MouseWheel -= glControl_MouseWheel;\r
glControl.Load -= new EventHandler(glControl_Load);\r
glControl.Disposed -= glControl_Disposed;\r
+\r
+ }\r
+ void glControl_Disposed(object sender, EventArgs e)\r
+ {\r
+ glControl_UnhookEvents();\r
}\r
\r
void SetSun()\r
GL.Light(LightName.Light0, LightParameter.Position, sunPos);\r
}\r
\r
+ bool glControlLoaded = false;\r
void glControl_Load(object sender, EventArgs e)\r
{\r
+ if (glControlLoaded) return;\r
+\r
try\r
{\r
GL.ShadeModel(ShadingModel.Smooth);\r
InitWater();\r
InitShaders();\r
RenderingEnabled = true;\r
+ glControlLoaded = true;\r
LoadCurrentPrims();\r
}\r
catch (Exception ex)\r
item.TGAData = null;\r
imageBytes = null;\r
}\r
+ context.MakeCurrent(window.WindowInfo);\r
context.Dispose();\r
window.Dispose();\r
+ TextureThreadContextReady.Set();\r
Logger.DebugLog("Texture thread exited");\r
}\r
#endregion Texture thread\r