Shrinking UI elements in the debugger.

This commit is contained in:
Ben Vanik 2015-09-06 20:49:20 -07:00
parent e5fbf840d2
commit a1a996c1e6
9 changed files with 46 additions and 5 deletions

View File

@ -3,3 +3,4 @@
#include "third_party\\elemental-forms\\resources.rc" #include "third_party\\elemental-forms\\resources.rc"
//IDR_xe_debug_ui_resources_skin_bg_tile_png RCDATA ".\\resources\\skin\\bg_tile.png" //IDR_xe_debug_ui_resources_skin_bg_tile_png RCDATA ".\\resources\\skin\\bg_tile.png"
IDR_xe_debug_ui_resources_smaller_skin_skin_tb_txt RCDATA ".\\resources\\smaller_skin\\skin.tb.txt"

View File

@ -10,6 +10,7 @@
#include "xenia/debug/ui/main_window.h" #include "xenia/debug/ui/main_window.h"
#include "el/animation_manager.h" #include "el/animation_manager.h"
#include "el/io/file_manager.h"
#include "el/util/debug.h" #include "el/util/debug.h"
#include "xenia/base/clock.h" #include "xenia/base/clock.h"
#include "xenia/base/logging.h" #include "xenia/base/logging.h"
@ -17,6 +18,10 @@
#include "xenia/base/threading.h" #include "xenia/base/threading.h"
#include "xenia/ui/gl/gl_context.h" #include "xenia/ui/gl/gl_context.h"
#if XE_PLATFORM_WIN32
#include "el/io/win32_res_file_system_win.h"
#endif // XE_PLATFORM_WIN32
namespace xe { namespace xe {
namespace debug { namespace debug {
namespace ui { namespace ui {
@ -40,6 +45,13 @@ bool MainWindow::Initialize() {
window_->set_context(xe::ui::gl::GLContext::Create(window_.get())); window_->set_context(xe::ui::gl::GLContext::Create(window_.get()));
window_->MakeReady(); window_->MakeReady();
#if XE_PLATFORM_WIN32
el::io::FileManager::RegisterFileSystem(
std::make_unique<el::io::Win32ResFileSystem>(
"IDR_xe_debug_ui_resources_"));
#endif // XE_PLATFORM_WIN32
window_->LoadSkin("smaller_skin/skin.tb.txt");
window_->on_closed.AddListener(std::bind(&MainWindow::OnClose, this)); window_->on_closed.AddListener(std::bind(&MainWindow::OnClose, this));
window_->on_key_down.AddListener([this](xe::ui::KeyEvent* e) { window_->on_key_down.AddListener([this](xe::ui::KeyEvent* e) {

View File

@ -0,0 +1,11 @@
elements
Button
padding 3 4
Button.flat
padding 3 4
ButtonInGroup
padding 3 4
Box
padding 5
ListItem
padding 1 4

View File

@ -652,7 +652,7 @@ X_STATUS XThread::Suspend(uint32_t* out_suspend_count) {
++guest_object<X_KTHREAD>()->suspend_count; ++guest_object<X_KTHREAD>()->suspend_count;
// If we are suspending ourselves, we can't hold the lock. // If we are suspending ourselves, we can't hold the lock.
if (XThread::GetCurrentThread() == this) { if (XThread::IsInThread() && XThread::GetCurrentThread() == this) {
global_lock.unlock(); global_lock.unlock();
} }

View File

@ -40,6 +40,8 @@ GL4ElementalRenderer::GL4Bitmap::~GL4Bitmap() {
bool GL4ElementalRenderer::GL4Bitmap::Init(int width, int height, bool GL4ElementalRenderer::GL4Bitmap::Init(int width, int height,
uint32_t* data) { uint32_t* data) {
GraphicsContextLock lock(context_);
assert(width == el::util::GetNearestPowerOfTwo(width)); assert(width == el::util::GetNearestPowerOfTwo(width));
assert(height == el::util::GetNearestPowerOfTwo(height)); assert(height == el::util::GetNearestPowerOfTwo(height));
width_ = width; width_ = width;

View File

@ -414,6 +414,10 @@ std::unique_ptr<el::graphics::Renderer> GLContext::CreateElementalRenderer() {
return GL4ElementalRenderer::Create(this); return GL4ElementalRenderer::Create(this);
} }
bool GLContext::is_current() {
return tls_glew_context_ == glew_context_.get();
}
bool GLContext::MakeCurrent() { bool GLContext::MakeCurrent() {
SCOPE_profile_cpu_f("gpu"); SCOPE_profile_cpu_f("gpu");
if (FLAGS_thread_safe_gl) { if (FLAGS_thread_safe_gl) {

View File

@ -40,6 +40,7 @@ class GLContext : public GraphicsContext {
std::unique_ptr<ProfilerDisplay> CreateProfilerDisplay() override; std::unique_ptr<ProfilerDisplay> CreateProfilerDisplay() override;
std::unique_ptr<el::graphics::Renderer> CreateElementalRenderer() override; std::unique_ptr<el::graphics::Renderer> CreateElementalRenderer() override;
bool is_current() override;
bool MakeCurrent() override; bool MakeCurrent() override;
void ClearCurrent() override; void ClearCurrent() override;

View File

@ -30,6 +30,7 @@ class GraphicsContext {
virtual std::unique_ptr<ProfilerDisplay> CreateProfilerDisplay() = 0; virtual std::unique_ptr<ProfilerDisplay> CreateProfilerDisplay() = 0;
virtual std::unique_ptr<el::graphics::Renderer> CreateElementalRenderer() = 0; virtual std::unique_ptr<el::graphics::Renderer> CreateElementalRenderer() = 0;
virtual bool is_current() = 0;
virtual bool MakeCurrent() = 0; virtual bool MakeCurrent() = 0;
virtual void ClearCurrent() = 0; virtual void ClearCurrent() = 0;
@ -44,12 +45,20 @@ class GraphicsContext {
struct GraphicsContextLock { struct GraphicsContextLock {
explicit GraphicsContextLock(GraphicsContext* context) : context_(context) { explicit GraphicsContextLock(GraphicsContext* context) : context_(context) {
context_->MakeCurrent(); was_current_ = context_->is_current();
if (!was_current_) {
context_->MakeCurrent();
}
}
~GraphicsContextLock() {
if (!was_current_) {
context_->ClearCurrent();
}
} }
~GraphicsContextLock() { context_->ClearCurrent(); }
private: private:
GraphicsContext* context_; bool was_current_ = false;
GraphicsContext* context_ = nullptr;
}; };
} // namespace ui } // namespace ui

View File

@ -116,7 +116,8 @@ class Window {
protected: protected:
Window(Loop* loop, const std::wstring& title); Window(Loop* loop, const std::wstring& title);
bool InitializeElemental(Loop* loop, el::graphics::Renderer* renderer); virtual bool InitializeElemental(Loop* loop,
el::graphics::Renderer* renderer);
virtual bool OnCreate(); virtual bool OnCreate();
virtual void OnMainMenuChange(); virtual void OnMainMenuChange();