Skip to content

Commit

Permalink
Fix Windows CMake build errors
Browse files Browse the repository at this point in the history
Lambda expressions with uncaptured constants were leading to errors,
and there were also some warnings about deprecated functions
(QFontMetrics::width and inet_ntoa).
  • Loading branch information
JosJuice committed May 3, 2020
1 parent 47d1dec commit bf57abc
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 32 deletions.
40 changes: 20 additions & 20 deletions Source/Core/DolphinQt/Config/VerifyWidget.cpp
Expand Up @@ -139,26 +139,26 @@ void VerifyWidget::Verify()
progress.GetRaw()->setMinimumDuration(500);
progress.GetRaw()->setWindowModality(Qt::WindowModal);

auto future =
std::async(std::launch::async,
[&verifier, &progress]() -> std::optional<DiscIO::VolumeVerifier::Result> {
progress.SetValue(0);
verifier.Start();
while (verifier.GetBytesProcessed() != verifier.GetTotalBytes())
{
progress.SetValue(static_cast<int>(verifier.GetBytesProcessed() / DIVISOR));
if (progress.WasCanceled())
return std::nullopt;

verifier.Process();
}
verifier.Finish();

const DiscIO::VolumeVerifier::Result result = verifier.GetResult();
progress.Reset();

return result;
});
auto future = std::async(
std::launch::async,
[&verifier, &progress, DIVISOR]() -> std::optional<DiscIO::VolumeVerifier::Result> {
progress.SetValue(0);
verifier.Start();
while (verifier.GetBytesProcessed() != verifier.GetTotalBytes())
{
progress.SetValue(static_cast<int>(verifier.GetBytesProcessed() / DIVISOR));
if (progress.WasCanceled())
return std::nullopt;

verifier.Process();
}
verifier.Finish();

const DiscIO::VolumeVerifier::Result result = verifier.GetResult();
progress.Reset();

return result;
});
progress.GetRaw()->exec();

std::optional<DiscIO::VolumeVerifier::Result> result = future.get();
Expand Down
18 changes: 13 additions & 5 deletions Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp
Expand Up @@ -194,11 +194,20 @@ void CodeViewWidget::FontBasedSizing()
constexpr int extra_text_width = 8;

const QFontMetrics fm(Settings::Instance().GetDebugFont());

const auto width = [&fm](QString text) {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
return fm.horizontalAdvance(text);
#else
return fm.width(text);
#endif
};

const int rowh = fm.height() + 1;
verticalHeader()->setMaximumSectionSize(rowh);
horizontalHeader()->setMinimumSectionSize(rowh + 5);
setColumnWidth(CODE_VIEW_COLUMN_BREAKPOINT, rowh + 5);
setColumnWidth(CODE_VIEW_COLUMN_ADDRESS, fm.width(QStringLiteral("80000000")) + extra_text_width);
setColumnWidth(CODE_VIEW_COLUMN_ADDRESS, width(QStringLiteral("80000000")) + extra_text_width);

// The longest instruction is technically 'ps_merge00' (0x10000420u), but those instructions are
// very rare and would needlessly increase the column size, so let's go with 'rlwinm.' instead.
Expand All @@ -210,11 +219,10 @@ void CodeViewWidget::FontBasedSizing()
const std::string ins = (split == std::string::npos ? disas : disas.substr(0, split));
const std::string param = (split == std::string::npos ? "" : disas.substr(split + 1));
setColumnWidth(CODE_VIEW_COLUMN_INSTRUCTION,
fm.width(QString::fromStdString(ins)) + extra_text_width);
width(QString::fromStdString(ins)) + extra_text_width);
setColumnWidth(CODE_VIEW_COLUMN_PARAMETERS,
fm.width(QString::fromStdString(param)) + extra_text_width);
setColumnWidth(CODE_VIEW_COLUMN_DESCRIPTION,
fm.width(QStringLiteral("0")) * 25 + extra_text_width);
width(QString::fromStdString(param)) + extra_text_width);
setColumnWidth(CODE_VIEW_COLUMN_DESCRIPTION, width(QStringLiteral("0")) * 25 + extra_text_width);

Update();
}
Expand Down
23 changes: 17 additions & 6 deletions Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
Expand Up @@ -90,6 +90,16 @@ QTableWidgetItem* GetSocketState(s32 host_fd)
return new QTableWidgetItem(QTableWidget::tr("Unbound"));
}

static QString GetAddressAndPort(const sockaddr_in& addr)
{
char buffer[16];
const char* addr_str = inet_ntop(AF_INET, &addr.sin_addr, buffer, sizeof(buffer));
if (!addr_str)
return {};

return QStringLiteral("%1:%2").arg(QString::fromLatin1(addr_str)).arg(ntohs(addr.sin_port));
}

QTableWidgetItem* GetSocketName(s32 host_fd)
{
if (host_fd < 0)
Expand All @@ -100,18 +110,19 @@ QTableWidgetItem* GetSocketName(s32 host_fd)
if (getsockname(host_fd, reinterpret_cast<sockaddr*>(&sock_addr), &sock_addr_len) != 0)
return new QTableWidgetItem(QTableWidget::tr("Unknown"));

const QString sock_name = QStringLiteral("%1:%2")
.arg(QString::fromLatin1(inet_ntoa(sock_addr.sin_addr)))
.arg(ntohs(sock_addr.sin_port));
const QString sock_name = GetAddressAndPort(sock_addr);
if (sock_name.isEmpty())
return new QTableWidgetItem(QTableWidget::tr("Unknown"));

sockaddr_in peer_addr;
socklen_t peer_addr_len = sizeof(sockaddr_in);
if (getpeername(host_fd, reinterpret_cast<sockaddr*>(&peer_addr), &peer_addr_len) != 0)
return new QTableWidgetItem(sock_name);

const QString peer_name = QStringLiteral("%1:%2")
.arg(QString::fromLatin1(inet_ntoa(peer_addr.sin_addr)))
.arg(ntohs(peer_addr.sin_port));
const QString peer_name = GetAddressAndPort(peer_addr);
if (peer_name.isEmpty())
return new QTableWidgetItem(sock_name);

return new QTableWidgetItem(QStringLiteral("%1->%2").arg(sock_name).arg(peer_name));
}
} // namespace
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/VideoCommon/CommandProcessor.cpp
Expand Up @@ -196,7 +196,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
}

mmio->Register(base | FIFO_BP_LO, MMIO::DirectRead<u16>(MMIO::Utils::LowPart(&fifo.CPBreakpoint)),
MMIO::ComplexWrite<u16>([](u32, u16 val) {
MMIO::ComplexWrite<u16>([WMASK_LO_ALIGN_32BIT](u32, u16 val) {
WriteLow(fifo.CPBreakpoint, val & WMASK_LO_ALIGN_32BIT);
}));
mmio->Register(base | FIFO_BP_HI,
Expand Down

0 comments on commit bf57abc

Please sign in to comment.