diff --git a/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs b/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs index 693424ff73..d19e6e755f 100644 --- a/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs +++ b/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs @@ -1,10 +1,6 @@ using System; using System.Collections.Generic; -using BizHawk.Common; -using BizHawk.Emulation.Common; -using BizHawk.Client.Common; - using BizHawk.Bizware.BizwareGL; namespace BizHawk.Client.EmuHawk @@ -13,7 +9,7 @@ namespace BizHawk.Client.EmuHawk /// Recycles a pair of temporary render targets, as long as the dimensions match. /// When the dimensions dont match, a new one will be allocated /// - class RenderTargetFrugalizer : IDisposable + public class RenderTargetFrugalizer : IDisposable { public RenderTargetFrugalizer(IGL gl) { diff --git a/BizHawk.Client.MultiHawk/BizHawk.Client.MultiHawk.csproj b/BizHawk.Client.MultiHawk/BizHawk.Client.MultiHawk.csproj index 6e84298e39..64ecceeab8 100644 --- a/BizHawk.Client.MultiHawk/BizHawk.Client.MultiHawk.csproj +++ b/BizHawk.Client.MultiHawk/BizHawk.Client.MultiHawk.csproj @@ -104,15 +104,12 @@ RecordMovie.cs - Form EmulatorWindow.cs - - diff --git a/BizHawk.Client.MultiHawk/DisplayManager/RenderTargetFrugalizer.cs b/BizHawk.Client.MultiHawk/DisplayManager/RenderTargetFrugalizer.cs deleted file mode 100644 index 9587bc6fa1..0000000000 --- a/BizHawk.Client.MultiHawk/DisplayManager/RenderTargetFrugalizer.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; - -using BizHawk.Common; -using BizHawk.Emulation.Common; -using BizHawk.Client.Common; - -using BizHawk.Bizware.BizwareGL; - -namespace BizHawk.Client.MultiHawk -{ - /// - /// Recycles a pair of temporary render targets, as long as the dimensions match. - /// When the dimensions dont match, a new one will be allocated - /// - class RenderTargetFrugalizer : IDisposable - { - public RenderTargetFrugalizer(IGL gl) - { - GL = gl; - ResetList(); - } - - public void Dispose() - { - foreach (var ct in CurrentRenderTargets) - if (ct != null) - ct.Dispose(); - ResetList(); - } - - void ResetList() - { - CurrentRenderTargets = new List(); - CurrentRenderTargets.Add(null); - CurrentRenderTargets.Add(null); - } - - IGL GL; - List CurrentRenderTargets; - - public RenderTarget Get(System.Drawing.Size dimensions) { return Get(dimensions.Width, dimensions.Height); } - public RenderTarget Get(int width, int height) - { - //get the current entry - RenderTarget CurrentRenderTarget = CurrentRenderTargets[0]; - - //check if its rotten and needs recreating - if (CurrentRenderTarget == null || CurrentRenderTarget.Texture2d.IntWidth != width || CurrentRenderTarget.Texture2d.IntHeight != height) - { - //needs recreating. be sure to kill the old one... - if (CurrentRenderTarget != null) - CurrentRenderTarget.Dispose(); - //and make a new one - CurrentRenderTarget = GL.CreateRenderTarget(width, height); - } - else - { - //its good! nothing more to do - } - - //now shuffle the buffers - CurrentRenderTargets[0] = CurrentRenderTargets[1]; - CurrentRenderTargets[1] = CurrentRenderTarget; - - return CurrentRenderTarget; - } - } -} \ No newline at end of file diff --git a/BizHawk.Client.MultiHawk/DisplayManager/SwappableDisplaySurfaceSet.cs b/BizHawk.Client.MultiHawk/DisplayManager/SwappableDisplaySurfaceSet.cs deleted file mode 100644 index 5734d055c6..0000000000 --- a/BizHawk.Client.MultiHawk/DisplayManager/SwappableDisplaySurfaceSet.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.Collections.Generic; -using System.Runtime.InteropServices; - -using BizHawk.Common; -using BizHawk.Client.Common; - -namespace BizHawk.Client.MultiHawk -{ - /// - /// encapsulates thread-safe concept of pending/current display surfaces, reusing buffers where matching - /// sizes are available and keeping them cleaned up when they dont seem like theyll need to be used anymore - /// - class SwappableDisplaySurfaceSet - { - DisplaySurface Pending, Current; - bool IsPending; - Queue ReleasedSurfaces = new Queue(); - - /// - /// retrieves a surface with the specified size, reusing an old buffer if available and clearing if requested - /// - public DisplaySurface AllocateSurface(int width, int height, bool needsClear = true) - { - for (; ; ) - { - DisplaySurface trial; - lock (this) - { - if (ReleasedSurfaces.Count == 0) break; - trial = ReleasedSurfaces.Dequeue(); - } - if (trial.Width == width && trial.Height == height) - { - if (needsClear) trial.Clear(); - return trial; - } - trial.Dispose(); - } - return new DisplaySurface(width, height); - } - - /// - /// sets the provided buffer as pending. takes control of the supplied buffer - /// - public void SetPending(DisplaySurface newPending) - { - lock (this) - { - if (Pending != null) ReleasedSurfaces.Enqueue(Pending); - Pending = newPending; - IsPending = true; - } - } - - public void ReleaseSurface(DisplaySurface surface) - { - lock (this) ReleasedSurfaces.Enqueue(surface); - } - - /// - /// returns the current buffer, making the most recent pending buffer (if there is such) as the new current first. - /// - public DisplaySurface GetCurrent() - { - lock (this) - { - if (IsPending) - { - if (Current != null) ReleasedSurfaces.Enqueue(Current); - Current = Pending; - Pending = null; - IsPending = false; - } - } - return Current; - } - } - -} \ No newline at end of file diff --git a/BizHawk.Client.MultiHawk/Extensions/ControlExtensions.cs b/BizHawk.Client.MultiHawk/Extensions/ControlExtensions.cs deleted file mode 100644 index 897a279b0f..0000000000 --- a/BizHawk.Client.MultiHawk/Extensions/ControlExtensions.cs +++ /dev/null @@ -1,283 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Windows.Forms; - -using BizHawk.Common; -using BizHawk.Common.ReflectionExtensions; -using BizHawk.Client.Common; - - -namespace BizHawk.Client.MultiHawk.WinFormExtensions -{ - public static class ControlExtensions - { - public static void PopulateFromEnum(this ComboBox box, object enumVal) - where T : struct, IConvertible - { - if (!typeof(T).IsEnum) - { - throw new ArgumentException("T must be an enumerated type"); - } - - box.Items.Clear(); - box.Items.AddRange( - typeof(T).GetEnumDescriptions() - .ToArray()); - box.SelectedItem = enumVal.GetDescription(); - } - - // extension method to make Control.Invoke easier to use - public static object Invoke(this Control control, Action action) - { - return control.Invoke(action); - } - - // extension method to make Control.BeginInvoke easier to use - public static IAsyncResult BeginInvoke(this Control control, Action action) - { - return control.BeginInvoke(action); - } - - public static void AddColumn(this ListView listView, string columnName, bool enabled, int columnWidth) - { - if (enabled) - { - if (listView.Columns[columnName] == null) - { - var column = new ColumnHeader - { - Name = columnName, - Text = columnName.Replace("Column", string.Empty), - Width = columnWidth, - }; - - listView.Columns.Add(column); - } - } - } - - public static void AddColumn(this ListView listView, ToolDialogSettings.Column column) - { - if (column.Visible) - { - if (listView.Columns[column.Name] == null) - { - var lsstViewColumn = new ColumnHeader - { - Name = column.Name, - Text = column.Name.Replace("Column", string.Empty), - Width = column.Width, - DisplayIndex = column.Index - }; - - listView.Columns.Add(lsstViewColumn); - } - } - } - - public static ToolStripMenuItem GenerateColumnsMenu(this ToolDialogSettings.ColumnList list, Action changeCallback) - { - var menu = new ToolStripMenuItem - { - Name = "GeneratedColumnsSubMenu", - Text = "Columns" - }; - - var dummyList = list; - - foreach (var column in dummyList) - { - var menuItem = new ToolStripMenuItem - { - Name = column.Name, - Text = column.Name.Replace("Column", string.Empty) - }; - - menuItem.Click += (o, ev) => - { - dummyList[menuItem.Name].Visible ^= true; - changeCallback(); - }; - - menu.DropDownItems.Add(menuItem); - } - - menu.DropDownOpened += (o, e) => - { - foreach (var column in dummyList) - { - (menu.DropDownItems[column.Name] as ToolStripMenuItem).Checked = column.Visible; - } - }; - - return menu; - } - - public static Point ChildPointToScreen(this Control control, Control child) - { - return control.PointToScreen(new Point(child.Location.X, child.Location.Y)); - } - - #region Enumerable to Enumerable - - /// - /// Converts the outdated IEnumerable Controls property to a IEnumerable like .NET should have done a long time ago - /// - public static IEnumerable Controls(this Control control) - { - return control.Controls - .OfType(); - } - - public static IEnumerable TabPages(this TabControl tabControl) - { - return tabControl.TabPages.Cast(); - } - - public static IEnumerable SelectedIndices(this ListView listView) - { - return listView.SelectedIndices.Cast(); - } - - public static IEnumerable ColumnHeaders(this ListView listView) - { - return listView.Columns.OfType(); - } - - #endregion - } - - public static class ListViewExtensions - { - [StructLayout(LayoutKind.Sequential)] - public struct HDITEM - { - public Mask mask; - public int cxy; - [MarshalAs(UnmanagedType.LPTStr)] - public string pszText; - public IntPtr hbm; - public int cchTextMax; - public Format fmt; - public IntPtr lParam; - // _WIN32_IE >= 0x0300 - public int iImage; - public int iOrder; - // _WIN32_IE >= 0x0500 - public uint type; - public IntPtr pvFilter; - // _WIN32_WINNT >= 0x0600 - public uint state; - - [Flags] - public enum Mask - { - Format = 0x4, // HDI_FORMAT - }; - - [Flags] - public enum Format - { - SortDown = 0x200, // HDF_SORTDOWN - SortUp = 0x400, // HDF_SORTUP - }; - }; - - public const int LVM_FIRST = 0x1000; - public const int LVM_GETHEADER = LVM_FIRST + 31; - - public const int HDM_FIRST = 0x1200; - public const int HDM_GETITEM = HDM_FIRST + 11; - public const int HDM_SETITEM = HDM_FIRST + 12; - - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam); - - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, ref HDITEM lParam); - - /// - /// Dumps the contents of the ListView into a tab separated list of lines - /// - public static string CopyItemsAsText(this ListView listViewControl) - { - var indexes = listViewControl.SelectedIndices; - if (indexes.Count <= 0) - { - return String.Empty; - } - - var sb = new StringBuilder(); - - // walk over each selected item and subitem within it to generate a string from it - foreach (int index in indexes) - { - foreach (ListViewItem.ListViewSubItem item in listViewControl.Items[index].SubItems) - { - if (!String.IsNullOrWhiteSpace(item.Text)) - { - sb.Append(item.Text).Append('\t'); - } - } - - // remove the last tab - sb.Remove(sb.Length - 1, 1); - - sb.Append("\r\n"); - } - - // remove last newline - sb.Length -= 2; - - - return sb.ToString(); - } - - public static void SetSortIcon(this ListView listViewControl, int columnIndex, SortOrder order) - { - IntPtr columnHeader = SendMessage(listViewControl.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero); - for (int columnNumber = 0; columnNumber <= listViewControl.Columns.Count - 1; columnNumber++) - { - var columnPtr = new IntPtr(columnNumber); - var item = new HDITEM - { - mask = HDITEM.Mask.Format - }; - - if (SendMessage(columnHeader, HDM_GETITEM, columnPtr, ref item) == IntPtr.Zero) - { - throw new Win32Exception(); - } - - if (order != SortOrder.None && columnNumber == columnIndex) - { - switch (order) - { - case SortOrder.Ascending: - item.fmt &= ~HDITEM.Format.SortDown; - item.fmt |= HDITEM.Format.SortUp; - break; - case SortOrder.Descending: - item.fmt &= ~HDITEM.Format.SortUp; - item.fmt |= HDITEM.Format.SortDown; - break; - } - } - else - { - item.fmt &= ~HDITEM.Format.SortDown & ~HDITEM.Format.SortUp; - } - - if (SendMessage(columnHeader, HDM_SETITEM, columnPtr, ref item) == IntPtr.Zero) - { - throw new Win32Exception(); - } - } - } - } -} diff --git a/BizHawk.Client.MultiHawk/Extensions/CoreExtensions.cs b/BizHawk.Client.MultiHawk/Extensions/CoreExtensions.cs deleted file mode 100644 index b48c795836..0000000000 --- a/BizHawk.Client.MultiHawk/Extensions/CoreExtensions.cs +++ /dev/null @@ -1,25 +0,0 @@ -using BizHawk.Emulation.Common; -using BizHawk.Emulation.Common.IEmulatorExtensions; -using BizHawk.Emulation.Cores.Nintendo.SNES; -using BizHawk.Client.Common; - -namespace BizHawk.Client.MultiHawk.CoreExtensions -{ - public static class CoreExtensions - { - public static string DisplayName(this IEmulator core) - { - var attributes = core.Attributes(); - - var str = (!attributes.Released ? "(Experimental) " : string.Empty) + - attributes.CoreName; - - if (core is LibsnesCore) - { - str += " (" + ((LibsnesCore)core).CurrentProfile + ")"; - } - - return str; - } - } -}