Skip to content
Permalink
Browse files
Merge pull request #10604 from Pokechu22/gcadapter-refactor
Refactor GCAdapter, part 1
  • Loading branch information
JMC47 committed Jun 4, 2022
2 parents 96f9d10 + 6823b4d commit 664663e
Show file tree
Hide file tree
Showing 7 changed files with 436 additions and 540 deletions.
@@ -8,7 +8,6 @@
#include "Common/CommonTypes.h"
#include "Common/Swap.h"
#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "Core/HW/GCPad.h"
#include "Core/NetPlayProto.h"
@@ -23,7 +23,7 @@ class Context::Impl
Impl()
{
const int ret = libusb_init(&m_context);
ASSERT_MSG(IOS_USB, ret == LIBUSB_SUCCESS, "Failed to init libusb: {}", libusb_error_name(ret));
ASSERT_MSG(IOS_USB, ret == LIBUSB_SUCCESS, "Failed to init libusb: {}", ErrorWrap(ret));
if (ret != LIBUSB_SUCCESS)
return;

@@ -118,4 +118,22 @@ ConfigDescriptor MakeConfigDescriptor(libusb_device* device, u8 config_num)
#endif
return {nullptr, [](auto) {}};
}

const char* ErrorWrap::GetName() const
{
#if defined(__LIBUSB__)
return libusb_error_name(m_error);
#else
return "__LIBUSB__ not defined";
#endif
}

const char* ErrorWrap::GetStrError() const
{
#if defined(__LIBUSB__)
return libusb_strerror(static_cast<libusb_error>(m_error));
#else
return "__LIBUSB__ not defined";
#endif
}
} // namespace LibusbUtils
@@ -3,6 +3,7 @@

#pragma once

#include <fmt/format.h>
#include <functional>
#include <memory>

@@ -39,4 +40,28 @@ class Context

using ConfigDescriptor = UniquePtr<libusb_config_descriptor>;
ConfigDescriptor MakeConfigDescriptor(libusb_device* device, u8 config_num = 0);

// Wrapper for libusb_error to be used with fmt. Note that we can't create a fmt::formatter
// directly for libusb_error as it is a plain enum and most libusb functions actually return an
// int instead of a libusb_error.
struct ErrorWrap
{
constexpr explicit ErrorWrap(int error) : m_error(error) {}
const int m_error;

const char* GetStrError() const;
const char* GetName() const;
};
} // namespace LibusbUtils

template <>
struct fmt::formatter<LibusbUtils::ErrorWrap>
{
constexpr auto parse(fmt::format_parse_context& ctx) { return ctx.begin(); }
template <typename FormatContext>
auto format(const LibusbUtils::ErrorWrap& wrap, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "{} ({}: {})", wrap.GetStrError(), wrap.m_error,
wrap.GetName());
}
};
@@ -1,6 +1,8 @@
add_library(inputcommon
DynamicInputTextureManager.cpp
DynamicInputTextureManager.h
GCAdapter.cpp
GCAdapter.h
ImageOperations.cpp
ImageOperations.h
InputConfig.cpp
@@ -143,13 +145,7 @@ elseif(ANDROID)
)
endif()

if(ANDROID)
target_sources(inputcommon PRIVATE GCAdapter_Android.cpp)
else()
target_sources(inputcommon PRIVATE
GCAdapter.cpp
GCAdapter.h
)
if(NOT ANDROID)
target_link_libraries(inputcommon PUBLIC ${LIBUSB_LIBRARIES})
endif()

0 comments on commit 664663e

Please sign in to comment.