Merge remote-tracking branch 'origin/master' into cdrom_changes
This commit is contained in:
@@ -105,6 +105,8 @@ static fdc_cards_t fdc_cards[] = {
|
||||
// clang-format off
|
||||
{ &device_none },
|
||||
{ &device_internal },
|
||||
{ &fdc_xt_device },
|
||||
{ &fdc_at_device },
|
||||
{ &fdc_b215_device },
|
||||
{ &fdc_pii151b_device },
|
||||
{ &fdc_pii158b_device },
|
||||
|
||||
@@ -37,7 +37,7 @@ msgid "&Hide status bar"
|
||||
msgstr "&Masquer la barre de status"
|
||||
|
||||
msgid "Hide &toolbar"
|
||||
msgstr "Hide &toolbar"
|
||||
msgstr "Masquer la &barre d'outils"
|
||||
|
||||
msgid "&Resizeable window"
|
||||
msgstr "Fenètre &Retaillable"
|
||||
|
||||
@@ -54,8 +54,6 @@ plat_vidapi(const char *api)
|
||||
return 4;
|
||||
} else if (!strcasecmp(api, "vnc")) {
|
||||
return 5;
|
||||
} else if (!strcasecmp(api, "qt_opengl3_pcem")) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -85,9 +83,6 @@ plat_vidapi_name(int api)
|
||||
case 5:
|
||||
name = "vnc";
|
||||
break;
|
||||
case 6:
|
||||
name = "qt_opengl3_pcem";
|
||||
break;
|
||||
default:
|
||||
fatal("Unknown renderer: %i\n", api);
|
||||
break;
|
||||
|
||||
@@ -21,6 +21,8 @@ extern "C"
|
||||
|
||||
extern void startblit();
|
||||
extern void endblit();
|
||||
extern ssize_t local_getline(char **buf, size_t *bufsiz, FILE *fp);
|
||||
extern char* trim(char* str);
|
||||
}
|
||||
|
||||
#define safe_strncpy(a, b, n) \
|
||||
@@ -156,7 +158,8 @@ static int get_parameters(glslp_t *glsl) {
|
||||
int i;
|
||||
struct parameter p;
|
||||
for (i = 0; i < glsl->num_shaders; ++i) {
|
||||
char line[1024];
|
||||
size_t size = 0;
|
||||
char* line = NULL;
|
||||
struct shader *shader = &glsl->shaders[i];
|
||||
int bom = glsl_detect_bom(shader->shader_fn);
|
||||
FILE *f = plat_fopen(shader->shader_fn, "rb");
|
||||
@@ -165,7 +168,9 @@ static int get_parameters(glslp_t *glsl) {
|
||||
if (bom) {
|
||||
fseek(f, 3, SEEK_SET);
|
||||
}
|
||||
while (fgets(line, sizeof(line) - 1, f) && glsl->num_parameters < MAX_PARAMETERS) {
|
||||
while (local_getline(&line, &size, f) != -1 && glsl->num_parameters < MAX_PARAMETERS) {
|
||||
line[strcspn(line, "\r\n")] = '\0';
|
||||
trim(line);
|
||||
int num = sscanf(line, "#pragma parameter %63s \"%63[^\"]\" %f %f %f %f", p.id, p.description,
|
||||
&p.default_value, &p.min, &p.max, &p.step);
|
||||
if (num < 5)
|
||||
|
||||
@@ -181,6 +181,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
main_window = this;
|
||||
ui->setupUi(this);
|
||||
status->setSoundGainAction(ui->actionSound_gain);
|
||||
ui->menuEGA_S_VGA_settings->menuAction()->setMenuRole(QAction::NoRole);
|
||||
ui->stackedWidget->setMouseTracking(true);
|
||||
statusBar()->setVisible(!hide_status_bar);
|
||||
#ifdef Q_OS_WINDOWS
|
||||
@@ -454,9 +455,6 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
endblit();
|
||||
}
|
||||
#endif
|
||||
case 6:
|
||||
newVidApi = RendererStack::Renderer::OpenGL3PCem;
|
||||
break;
|
||||
}
|
||||
ui->stackedWidget->switchRenderer(newVidApi);
|
||||
if (!show_second_monitors)
|
||||
@@ -468,7 +466,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
});
|
||||
|
||||
connect(ui->stackedWidget, &RendererStack::rendererChanged, [this]() {
|
||||
ui->actionRenderer_options->setVisible(ui->stackedWidget->hasOptions());
|
||||
ui->actionRenderer_options->setEnabled(ui->stackedWidget->hasOptions());
|
||||
});
|
||||
|
||||
/* Trigger initial renderer switch */
|
||||
@@ -1754,7 +1752,7 @@ MainWindow::on_actionAbout_86Box_triggered()
|
||||
versioninfo.append(QString(" [%1, %2]").arg(QSysInfo::buildCpuArchitecture(), tr(DYNAREC_STR)));
|
||||
msgBox.setText(QString("<b>%3%1%2</b>").arg(EMU_VERSION_FULL, versioninfo, tr("86Box v")));
|
||||
msgBox.setInformativeText(tr("An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."));
|
||||
msgBox.setWindowTitle("About 86Box");
|
||||
msgBox.setWindowTitle(tr("About 86Box"));
|
||||
const auto closeButton = msgBox.addButton("OK", QMessageBox::ButtonRole::AcceptRole);
|
||||
msgBox.setEscapeButton(closeButton);
|
||||
const auto webSiteButton = msgBox.addButton(EMU_SITE, QMessageBox::ButtonRole::HelpRole);
|
||||
@@ -2028,8 +2026,8 @@ MainWindow::on_actionRenderer_options_triggered()
|
||||
ui->stackedWidget->switchRenderer(static_cast<RendererStack::Renderer>(vid_api));
|
||||
if (show_second_monitors) {
|
||||
for (int i = 1; i < MONITORS_NUM; i++) {
|
||||
if (renderers[i] && renderers[i]->reloadRendererOption() && renderers[i]->hasOptions()) {
|
||||
ui->stackedWidget->switchRenderer(static_cast<RendererStack::Renderer>(vid_api));
|
||||
if (renderers[i]) {
|
||||
renderers[i]->switchRenderer(static_cast<RendererStack::Renderer>(vid_api));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,6 +353,9 @@
|
||||
<property name="text">
|
||||
<string>Exit</string>
|
||||
</property>
|
||||
<property name="menuRole">
|
||||
<enum>QAction::QuitRole</enum>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionSettings">
|
||||
<property name="icon">
|
||||
@@ -815,6 +818,9 @@
|
||||
<property name="text">
|
||||
<string>Renderer options...</string>
|
||||
</property>
|
||||
<property name="menuRole">
|
||||
<enum>QAction::NoRole</enum>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionVulkan">
|
||||
<property name="checkable">
|
||||
|
||||
@@ -1393,6 +1393,10 @@ OpenGLRenderer::render()
|
||||
|
||||
glw.glBindTexture(GL_TEXTURE_2D, scene_texture.id);
|
||||
scene_texture.min_filter = scene_texture.mag_filter = video_filter_method ? GL_LINEAR : GL_NEAREST;
|
||||
active_shader->scene.fbo.texture.min_filter = active_shader->scene.fbo.texture.mag_filter = video_filter_method ? GL_LINEAR : GL_NEAREST;
|
||||
glw.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, video_filter_method ? GL_LINEAR : GL_NEAREST);
|
||||
glw.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, video_filter_method ? GL_LINEAR : GL_NEAREST);
|
||||
glw.glBindTexture(GL_TEXTURE_2D, active_shader->scene.fbo.texture.id);
|
||||
glw.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, video_filter_method ? GL_LINEAR : GL_NEAREST);
|
||||
glw.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, video_filter_method ? GL_LINEAR : GL_NEAREST);
|
||||
glw.glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
@@ -288,7 +288,8 @@ RendererStack::leaveEvent(QEvent *event)
|
||||
void
|
||||
RendererStack::switchRenderer(Renderer renderer)
|
||||
{
|
||||
startblit();
|
||||
//startblit();
|
||||
switchInProgress = true;
|
||||
if (current) {
|
||||
rendererWindow->finalize();
|
||||
removeWidget(current.get());
|
||||
@@ -339,26 +340,6 @@ RendererStack::createRenderer(Renderer renderer)
|
||||
current.reset(this->createWindowContainer(hw, this));
|
||||
break;
|
||||
}
|
||||
case Renderer::OpenGL3PCem:
|
||||
{
|
||||
this->createWinId();
|
||||
auto hw = new OpenGLRenderer(this);
|
||||
rendererWindow = hw;
|
||||
connect(this, &RendererStack::blitToRenderer, hw, &OpenGLRenderer::onBlit, Qt::QueuedConnection);
|
||||
connect(hw, &OpenGLRenderer::initialized, [=]() {
|
||||
/* Buffers are available only after initialization. */
|
||||
imagebufs = rendererWindow->getBuffers();
|
||||
endblit();
|
||||
emit rendererChanged();
|
||||
});
|
||||
connect(hw, &OpenGLRenderer::errorInitializing, [=]() {
|
||||
/* Renderer not could initialize, fallback to software. */
|
||||
imagebufs = {};
|
||||
QTimer::singleShot(0, this, [this]() { switchRenderer(Renderer::Software); });
|
||||
});
|
||||
current.reset(this->createWindowContainer(hw, this));
|
||||
break;
|
||||
}
|
||||
case Renderer::OpenGL3:
|
||||
{
|
||||
this->createWinId();
|
||||
@@ -369,7 +350,7 @@ RendererStack::createRenderer(Renderer renderer)
|
||||
connect(hw, &OpenGLRenderer::initialized, [=]() {
|
||||
/* Buffers are available only after initialization. */
|
||||
imagebufs = rendererWindow->getBuffers();
|
||||
endblit();
|
||||
switchInProgress = false;
|
||||
emit rendererChanged();
|
||||
});
|
||||
connect(hw, &OpenGLRenderer::errorInitializing, [=]() {
|
||||
@@ -401,7 +382,7 @@ RendererStack::createRenderer(Renderer renderer)
|
||||
connect(hw, &VulkanWindowRenderer::rendererInitialized, [=]() {
|
||||
/* Buffers are available only after initialization. */
|
||||
imagebufs = rendererWindow->getBuffers();
|
||||
endblit();
|
||||
switchInProgress = false;
|
||||
emit rendererChanged();
|
||||
});
|
||||
connect(hw, &VulkanWindowRenderer::errorInitializing, [=]() {
|
||||
@@ -431,9 +412,9 @@ RendererStack::createRenderer(Renderer renderer)
|
||||
|
||||
currentBuf = 0;
|
||||
|
||||
if (renderer != Renderer::OpenGL3 && renderer != Renderer::Vulkan && renderer != Renderer::OpenGL3PCem) {
|
||||
if (renderer != Renderer::OpenGL3 && renderer != Renderer::Vulkan) {
|
||||
imagebufs = rendererWindow->getBuffers();
|
||||
endblit();
|
||||
switchInProgress = false;
|
||||
emit rendererChanged();
|
||||
}
|
||||
}
|
||||
@@ -443,7 +424,7 @@ void
|
||||
RendererStack::blit(int x, int y, int w, int h)
|
||||
{
|
||||
if ((x < 0) || (y < 0) || (w <= 0) || (h <= 0) ||
|
||||
(w > 2048) || (h > 2048) ||
|
||||
(w > 2048) || (h > 2048) || (switchInProgress) ||
|
||||
(monitors[m_monitor_index].target_buffer == NULL) || imagebufs.empty() ||
|
||||
std::get<std::atomic_flag *>(imagebufs[currentBuf])->test_and_set()) {
|
||||
video_blit_complete_monitor(m_monitor_index);
|
||||
|
||||
@@ -61,7 +61,6 @@ public:
|
||||
OpenGLES,
|
||||
OpenGL3,
|
||||
Vulkan,
|
||||
OpenGL3PCem = 6,
|
||||
None = -1
|
||||
};
|
||||
void switchRenderer(Renderer renderer);
|
||||
@@ -114,6 +113,7 @@ private:
|
||||
std::unique_ptr<QWidget> current;
|
||||
|
||||
std::atomic_bool rendererTakesScreenshots;
|
||||
std::atomic_bool switchInProgress{false};
|
||||
};
|
||||
|
||||
#endif // QT_RENDERERCONTAINER_HPP
|
||||
|
||||
@@ -2742,7 +2742,7 @@ static const device_config_t es1370_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = NULL,
|
||||
.default_int = 1,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user