public void Start() { if (Running) { return; } Running = true; ConfigManager.LoadConfigAsync().ContinueWith((Task loadTask) => { Logger.Log("Config loaded successfully"); ConfigManager.SaveConfigAsync().ContinueWith((Task saveTask) => { Logger.Log("Config saved"); }); WallpaperRenderer.Initialize(); ThreadManager.Run(InputThread = new InputThread(UpdateInput)); ThreadManager.Run(BrowserThread = new BrowserThread(BrowserInit)); ThreadManager.Run(WallpaperThread = new RenderThread(RenderInit)); ThreadManager.Run(ControllerThread = new ControllerThread(ControllerInit)); }); while (Running) { System.Threading.Thread.Sleep(1); } ; }
public void Dispose() { TaskbarController.Dispose(); WallpaperRenderer.Dispose(); BrowserManager.Dispose(); ThreadManager.StopAll(); }
public bool Draw(WallpaperRenderer renderer, IntPtr hdc, IntPtr memDc) { if (!BrowserManager.Browser.ShouldDraw) { return(false); } BrowserManager.Browser.ShouldDraw = false; Size wallpaperSize = renderer.ScreenManager.WallpaperSize; if (!BrowserManager.Browser.Size.Equals(wallpaperSize)) { BrowserManager.Browser.Size = wallpaperSize; } Bitmap bitmap = BrowserManager.Browser.GetRenderData(); if (bitmap == null) { if (lastRenderData != null) { bitmap = lastRenderData; } else { return(false); } } else { lastRenderData?.Dispose(); } IntPtr hBitmap = bitmap.GetHbitmap(); NativeWin32.SelectObject(memDc, hBitmap); Point offset = renderer.ScreenManager.WallpaperOffset; bool flag = NativeWin32.BitBlt(hdc, offset.X, offset.Y, wallpaperSize.Width, wallpaperSize.Height, memDc, 0, 0, NativeWin32.TernaryRasterOperations.SRCCOPY); NativeWin32.DeleteObject(hBitmap); lastRenderData = bitmap; return(flag); }
public WebWallpaper(ConfigEntry defaultConfig) { MainThread = System.Threading.Thread.CurrentThread; DataStorage = new DataStorage() { DataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "web-wallpaper") }; ConfigManager = new ConfigManager(DataStorage, defaultConfig); ThreadManager = new ThreadManager(); InputManager = new InputManager(); BrowserManager = new BrowserManager(InputManager); WallpaperRenderer = new WallpaperRenderer(this); TaskbarController = new TaskbarController(this); Running = false; }
public void RenderInit() { Logger.Log("Rendering thread started"); WallpaperRenderer.Run(); }