Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
@@ -17,9 +17,11 @@
|
||||
|
||||
# Parse arguments.
|
||||
newversion="$1"
|
||||
romversion="$2"
|
||||
|
||||
if [ -z "$(echo "$newversion" | grep '\.')" ]
|
||||
then
|
||||
echo '[!] Usage: bumpversion.sh x.y[.z]'
|
||||
echo '[!] Usage: bumpversion.sh x.y[.z] [romversion]'
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
@@ -30,6 +32,12 @@ newversion_min=$(echo "$newversion" | cut -d. -f2)
|
||||
newversion_patch=$(echo "$newversion" | cut -d. -f3)
|
||||
[ -z "$newversion_patch" ] && newversion_patch=0
|
||||
|
||||
if [ -z "${romversion}" ]; then
|
||||
# Get the latest ROM release from the GitHub API.
|
||||
romversion=$(curl --silent "https://api.github.com/repos/86Box/roms/releases/latest" |
|
||||
grep '"tag_name":' |
|
||||
sed -E 's/.*"([^"]+)".*/\1/')
|
||||
fi
|
||||
|
||||
# Switch to the repository root directory.
|
||||
cd "$(dirname "$0")" || exit
|
||||
@@ -61,6 +69,7 @@ patch_file src/include_make/*/version.h EMU_VERSION_PATCH 's/(#\s*define\s+EMU_V
|
||||
patch_file src/include_make/*/version.h COPYRIGHT_YEAR 's/(#\s*define\s+COPYRIGHT_YEAR\s+)[0-9]+/\1'"$(date +%Y)"'/'
|
||||
patch_file src/include_make/*/version.h EMU_DOCS_URL 's/(#\s*define\s+EMU_DOCS_URL\s+"https:\/\/[^\/]+\/en\/v)[^\/]+/\1'"$newversion_maj.$newversion_min"'/'
|
||||
patch_file src/unix/assets/*.spec Version 's/(Version:\s+)[0-9].+/\1'"$newversion"'/'
|
||||
patch_file src/unix/assets/*.spec '%global romver' 's/(^%global\ romver\s+)[0-9]{8}/\1'"$romversion"'/'
|
||||
patch_file src/unix/assets/*.spec 'changelog version' 's/(^[*]\s.*>\s+)[0-9].+/\1'"$newversion"-1'/'
|
||||
patch_file src/unix/assets/*.spec 'changelog date' 's/(^[*]\s)[a-zA-Z]{3}\s[a-zA-Z]{3}\s[0-9]{2}\s[0-9]{4}/\1'"$(pretty_date)"'/'
|
||||
patch_file src/unix/assets/*.metainfo.xml release 's/(<release version=")[^"]+(" date=")[^"]+/\1'"$newversion"'\2'"$(date +%Y-%m-%d)"'/'
|
||||
|
10
src/86box.c
10
src/86box.c
@@ -138,6 +138,10 @@ char rom_path[1024] = { '\0'}; /* (O) full path to ROMs */
|
||||
rom_path_t rom_paths = { "", NULL }; /* (O) full paths to ROMs */
|
||||
char log_path[1024] = { '\0'}; /* (O) full path of logfile */
|
||||
char vm_name[1024] = { '\0'}; /* (O) display name of the VM */
|
||||
#ifdef USE_INSTRUMENT
|
||||
uint8_t instru_enabled = 0;
|
||||
uint64_t instru_run_ms = 0;
|
||||
#endif
|
||||
|
||||
/* Configuration values. */
|
||||
int window_remember;
|
||||
@@ -567,6 +571,12 @@ usage:
|
||||
|
||||
/* .. and then exit. */
|
||||
return(0);
|
||||
#ifdef USE_INSTRUMENT
|
||||
} else if (!strcasecmp(argv[c], "--instrument")) {
|
||||
if ((c+1) == argc) goto usage;
|
||||
instru_enabled = 1;
|
||||
sscanf(argv[++c], "%llu", &instru_run_ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Uhm... out of options here.. */
|
||||
|
@@ -57,6 +57,10 @@ if(VNC)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(INSTRUMENT)
|
||||
add_compile_definitions(USE_INSTRUMENT)
|
||||
endif()
|
||||
|
||||
target_link_libraries(86Box cpu chipset mch dev mem fdd game cdrom zip mo hdd
|
||||
net print scsi sio snd vid voodoo plat ui)
|
||||
|
||||
|
@@ -76,6 +76,10 @@ extern uint64_t source_hwnd;
|
||||
extern char rom_path[1024]; /* (O) full path to ROMs */
|
||||
extern char log_path[1024]; /* (O) full path of logfile */
|
||||
extern char vm_name[1024]; /* (O) display name of the VM */
|
||||
#ifdef USE_INSTRUMENT
|
||||
extern uint8_t instru_enabled;
|
||||
extern uint64_t instru_run_ms;
|
||||
#endif
|
||||
|
||||
#define window_x monitor_settings[0].mon_window_x
|
||||
#define window_y monitor_settings[0].mon_window_y
|
||||
|
@@ -237,6 +237,7 @@ nvr_load(void)
|
||||
{
|
||||
char *path;
|
||||
FILE *fp;
|
||||
uint8_t regs[NVR_MAXSIZE] = { 0 };
|
||||
|
||||
/* Make sure we have been initialized. */
|
||||
if (saved_nvr == NULL) return(0);
|
||||
@@ -255,9 +256,12 @@ nvr_load(void)
|
||||
fp = plat_fopen(path, "rb");
|
||||
saved_nvr->is_new = (fp == NULL);
|
||||
if (fp != NULL) {
|
||||
memcpy(regs, saved_nvr->regs, sizeof(regs));
|
||||
/* Read NVR contents from file. */
|
||||
if (fread(saved_nvr->regs, 1, saved_nvr->size, fp) != saved_nvr->size)
|
||||
fatal("nvr_load(): Error reading data\n");
|
||||
if (fread(saved_nvr->regs, 1, saved_nvr->size, fp) != saved_nvr->size) {
|
||||
memcpy(saved_nvr->regs, regs, sizeof(regs));
|
||||
saved_nvr->is_new = 1;
|
||||
}
|
||||
(void)fclose(fp);
|
||||
}
|
||||
} else
|
||||
|
@@ -31,6 +31,7 @@ extern "C"
|
||||
#include <86box/86box.h>
|
||||
#include <86box/plat.h>
|
||||
#include <86box/mouse.h>
|
||||
#include <poll.h>
|
||||
}
|
||||
|
||||
static std::vector<std::pair<int, libevdev*>> evdev_mice;
|
||||
@@ -54,25 +55,39 @@ void evdev_mouse_poll()
|
||||
|
||||
void evdev_thread_func()
|
||||
{
|
||||
struct pollfd *pfds = (struct pollfd*)calloc(evdev_mice.size(), sizeof(struct pollfd));
|
||||
for (unsigned int i = 0; i < evdev_mice.size(); i++)
|
||||
{
|
||||
pfds[i].fd = libevdev_get_fd(evdev_mice[i].second);
|
||||
pfds[i].events = POLLIN;
|
||||
}
|
||||
|
||||
while (!stopped)
|
||||
{
|
||||
poll(pfds, evdev_mice.size(), 500);
|
||||
for (unsigned int i = 0; i < evdev_mice.size(); i++)
|
||||
{
|
||||
struct input_event ev;
|
||||
int rc = libevdev_next_event(evdev_mice[i].second, LIBEVDEV_READ_FLAG_NORMAL, &ev);
|
||||
if (rc == 0 && ev.type == EV_REL && mouse_capture)
|
||||
if (pfds[i].revents & POLLIN) {
|
||||
while (libevdev_next_event(evdev_mice[i].second, LIBEVDEV_READ_FLAG_NORMAL, &ev) == 0)
|
||||
{
|
||||
if (ev.type == EV_REL && mouse_capture)
|
||||
{
|
||||
if (ev.code == REL_X) evdev_mouse_rel_x += ev.value;
|
||||
if (ev.code == REL_Y) evdev_mouse_rel_y += ev.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < evdev_mice.size(); i++)
|
||||
{
|
||||
libevdev_free(evdev_mice[i].second);
|
||||
evdev_mice[i].second = nullptr;
|
||||
close(evdev_mice[i].first);
|
||||
}
|
||||
free(pfds);
|
||||
evdev_mice.clear();
|
||||
}
|
||||
|
||||
|
@@ -109,9 +109,21 @@ main_thread_fn()
|
||||
if (drawits > 50)
|
||||
drawits = 0;
|
||||
|
||||
#ifdef USE_INSTRUMENT
|
||||
uint64_t start_time = elapsed_timer.nsecsElapsed();
|
||||
#endif
|
||||
/* Run a block of code. */
|
||||
pc_run();
|
||||
|
||||
#ifdef USE_INSTRUMENT
|
||||
if (instru_enabled) {
|
||||
uint64_t elapsed_us = (elapsed_timer.nsecsElapsed() - start_time) / 1000;
|
||||
uint64_t total_elapsed_ms = (uint64_t)((double)tsc / cpu_s->rspeed * 1000);
|
||||
printf("[instrument] %llu, %llu\n", total_elapsed_ms, elapsed_us);
|
||||
if (instru_run_ms && total_elapsed_ms >= instru_run_ms)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
/* Every 200 frames we save the machine status. */
|
||||
if (++frames >= 200 && nvr_dosave) {
|
||||
qt_nvr_save();
|
||||
|
@@ -95,8 +95,8 @@ OpenGLRenderer::resizeEvent(QResizeEvent *event)
|
||||
context->makeCurrent(this);
|
||||
|
||||
glViewport(
|
||||
destination.x(),
|
||||
destination.y(),
|
||||
destination.x() * devicePixelRatio(),
|
||||
destination.y() * devicePixelRatio(),
|
||||
destination.width() * devicePixelRatio(),
|
||||
destination.height() * devicePixelRatio());
|
||||
}
|
||||
@@ -179,8 +179,8 @@ OpenGLRenderer::initialize()
|
||||
glClearColor(0.f, 0.f, 0.f, 1.f);
|
||||
|
||||
glViewport(
|
||||
destination.x(),
|
||||
destination.y(),
|
||||
destination.x() * devicePixelRatio(),
|
||||
destination.y() * devicePixelRatio(),
|
||||
destination.width() * devicePixelRatio(),
|
||||
destination.height() * devicePixelRatio());
|
||||
|
||||
@@ -425,6 +425,14 @@ OpenGLRenderer::onBlit(int buf_idx, int x, int y, int w, int h)
|
||||
|
||||
context->makeCurrent(this);
|
||||
|
||||
#ifdef Q_OS_MACOS
|
||||
glViewport(
|
||||
destination.x() * devicePixelRatio(),
|
||||
destination.y() * devicePixelRatio(),
|
||||
destination.width() * devicePixelRatio(),
|
||||
destination.height() * devicePixelRatio());
|
||||
#endif
|
||||
|
||||
if (source.width() != w || source.height() != h) {
|
||||
source.setRect(0, 0, w, h);
|
||||
|
||||
|
@@ -12,6 +12,8 @@
|
||||
# After a successful build, you can install the RPMs as follows:
|
||||
# sudo dnf install RPMS/$(uname -m)/86Box-3* RPMS/noarch/86Box-roms*
|
||||
|
||||
%global romver v3.7
|
||||
|
||||
Name: 86Box
|
||||
Version: 3.7.1
|
||||
Release: 1%{?dist}
|
||||
@@ -20,7 +22,7 @@ License: GPLv2+
|
||||
URL: https://86box.net
|
||||
|
||||
Source0: https://github.com/86Box/86Box/archive/refs/tags/v%%{version}.tar.gz
|
||||
Source1: https://github.com/86Box/roms/archive/refs/tags/%{version}.tar.gz
|
||||
Source1: https://github.com/86Box/roms/archive/refs/tags/%{romver}.zip
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: desktop-file-utils
|
||||
@@ -55,7 +57,7 @@ It supports various models of PCs, graphics and sound cards, and CPUs.
|
||||
|
||||
%package roms
|
||||
Summary: ROMs for use with 86Box
|
||||
Version: %{version}
|
||||
Version: %{romver}
|
||||
License: Proprietary
|
||||
BuildArch: noarch
|
||||
|
||||
@@ -111,7 +113,7 @@ popd
|
||||
|
||||
# files part of the rom package
|
||||
%files roms
|
||||
%license roms-%{version}/LICENSE
|
||||
%license roms-%{romver}/LICENSE
|
||||
%{_datadir}/%{name}/roms
|
||||
|
||||
%changelog
|
||||
|
Reference in New Issue
Block a user