embed renderer into main window

This commit is contained in:
emmaus 2020-02-02 21:27:31 +00:00 committed by emmauss
commit e3d0fe4df1
4 changed files with 68 additions and 39 deletions

View file

@ -4,7 +4,9 @@ using System.Threading;
using Ryujinx.HLE; using Ryujinx.HLE;
using Ryujinx.Graphics.OpenGL; using Ryujinx.Graphics.OpenGL;
using System.Text; using System.Text;
using OpenTK.Input;
using OpenTK.Graphics; using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using Gdk; using Gdk;
namespace Ryujinx.Ui namespace Ryujinx.Ui
@ -73,7 +75,7 @@ namespace Ryujinx.Ui
IsActive = true; IsActive = true;
GLib.Idle.Add(Render, GLib.Priority.HighIdle); GLib.Idle.Add(Render, GLib.Priority.DefaultIdle);
} }
public void Exit() public void Exit()
@ -107,6 +109,8 @@ namespace Ryujinx.Ui
return false; return false;
} }
GL.ClearColor(Color4.Black);
_ticks += _chrono.ElapsedTicks; _ticks += _chrono.ElapsedTicks;
_chrono.Restart(); _chrono.Restart();

View file

@ -138,7 +138,13 @@ namespace Ryujinx.Ui
{ {
if (disposing) if (disposing)
{ {
_graphicsContext.MakeCurrent(_windowInfo); try
{
_graphicsContext.MakeCurrent(_windowInfo);
}catch(Exception ex)
{
}
OnShuttingDown(); OnShuttingDown();

View file

@ -48,28 +48,29 @@ namespace Ryujinx.Ui
#pragma warning disable CS0649 #pragma warning disable CS0649
#pragma warning disable IDE0044 #pragma warning disable IDE0044
[GUI] Window _mainWin;
[GUI] CheckMenuItem _fullScreen; [GUI] Window _mainWin;
[GUI] MenuItem _stopEmulation; [GUI] CheckMenuItem _fullScreen;
[GUI] CheckMenuItem _favToggle; [GUI] MenuItem _stopEmulation;
[GUI] MenuItem _firmwareInstallFile; [GUI] CheckMenuItem _favToggle;
[GUI] MenuItem _firmwareInstallDirectory; [GUI] MenuItem _firmwareInstallFile;
[GUI] CheckMenuItem _iconToggle; [GUI] MenuItem _firmwareInstallDirectory;
[GUI] CheckMenuItem _appToggle; [GUI] CheckMenuItem _iconToggle;
[GUI] CheckMenuItem _developerToggle; [GUI] CheckMenuItem _appToggle;
[GUI] CheckMenuItem _versionToggle; [GUI] CheckMenuItem _developerToggle;
[GUI] CheckMenuItem _timePlayedToggle; [GUI] CheckMenuItem _versionToggle;
[GUI] CheckMenuItem _lastPlayedToggle; [GUI] CheckMenuItem _timePlayedToggle;
[GUI] CheckMenuItem _fileExtToggle; [GUI] CheckMenuItem _lastPlayedToggle;
[GUI] CheckMenuItem _fileSizeToggle; [GUI] CheckMenuItem _fileExtToggle;
[GUI] CheckMenuItem _pathToggle; [GUI] CheckMenuItem _fileSizeToggle;
[GUI] TreeView _gameTable; [GUI] CheckMenuItem _pathToggle;
[GUI] TreeSelection _gameTableSelection; [GUI] TreeView _gameTable;
[GUI] Label _progressLabel; [GUI] ScrolledWindow _gameTableWindow;
[GUI] Label _firmwareVersionLabel; [GUI] TreeSelection _gameTableSelection;
[GUI] LevelBar _progressBar; [GUI] Label _progressLabel;
[GUI] MenuItem _openDebugger; [GUI] Label _firmwareVersionLabel;
[GUI] MenuItem _toolsMenu; [GUI] LevelBar _progressBar;
[GUI] Box _viewBox;
#pragma warning restore CS0649 #pragma warning restore CS0649
#pragma warning restore IDE0044 #pragma warning restore IDE0044
@ -391,26 +392,30 @@ namespace Ryujinx.Ui
Application.Invoke(delegate Application.Invoke(delegate
{ {
Window window = new Window("Test"); _viewBox.Remove(_gameTableWindow);
window.HeightRequest = 720;
window.WidthRequest = 1280;
_gLWigdet.Expand = true; _gLWigdet.Expand = true;
window.Child = _gLWigdet; _viewBox.Child = _gLWigdet;
window.ShowAll(); _gLWigdet.ShowAll();
}); });
_gLWigdet.waitEvent.WaitOne(); _gLWigdet.waitEvent.WaitOne();
Application.Invoke(delegate Application.Invoke(delegate
{ {
_viewBox.Remove(_gLWigdet);
_gLWigdet.Dispose(); _gLWigdet.Dispose();
if(_gLWigdet.Window != this.Window && _gLWigdet.Window != null) if(_gLWigdet.Window != this.Window && _gLWigdet.Window != null)
{ {
_gLWigdet.Window.Dispose(); _gLWigdet.Window.Dispose();
} }
_viewBox.Add(_gameTableWindow);
_gameTableWindow.Expand = true;
this.Window.Title = "Ryujinx";
}); });
device.Dispose(); device.Dispose();

View file

@ -364,21 +364,35 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkScrolledWindow" id="_gameTableWindow"> <object class="GtkBox" id="_viewBox">
<property name="width_request">1280</property>
<property name="height_request">720</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="shadow_type">in</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkTreeView" id="_gameTable"> <object class="GtkScrolledWindow" id="_gameTableWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="reorderable">True</property> <property name="shadow_type">in</property>
<property name="hover_selection">True</property> <child>
<signal name="row-activated" handler="Row_Activated" swapped="no"/> <object class="GtkTreeView" id="_gameTable">
<child internal-child="selection"> <property name="visible">True</property>
<object class="GtkTreeSelection" id="_gameTableSelection"/> <property name="can_focus">True</property>
<property name="reorderable">True</property>
<property name="hover_selection">True</property>
<signal name="row-activated" handler="Row_Activated" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="_gameTableSelection"/>
</child>
</object>
</child> </child>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>