#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
-#include <epoxy/gl.h>
-
+#include <epoxy/gl.h> // IWYU pragma: keep
#include <QApplication>
#include <QCoreApplication>
#include <QGL>
#include <QSize>
#include <QSurfaceFormat>
+#include <string>
#include "context.h"
#include "flags.h"
int main(int argc, char *argv[])
{
- parse_flags(argc, argv);
+ parse_flags(PROGRAM_NAGERU, argc, argv);
if (global_flags.va_display.empty() ||
global_flags.va_display[0] != '/') {
// We normally use EGL for zerocopy, but if we use VA against DRM
// instead of against X11, we turn it off, and then don't need EGL.
setenv("QT_XCB_GL_INTEGRATION", "xcb_egl", 0);
+ using_egl = true;
}
setlinebuf(stdout);
av_register_all();
fmt.setProfile(QSurfaceFormat::CoreProfile);
fmt.setMajorVersion(3);
fmt.setMinorVersion(1);
+
+ // Turn off vsync, since Qt generally gives us at most frame rate
+ // (display frequency) / (number of QGLWidgets active).
+ fmt.setSwapInterval(0);
+
QSurfaceFormat::setDefaultFormat(fmt);
QGLFormat::setDefaultFormat(QGLFormat::fromSurfaceFormat(fmt));
global_share_widget = new QGLWidget();
+ if (!global_share_widget->isValid()) {
+ fprintf(stderr, "Failed to initialize OpenGL. Nageru needs at least OpenGL 3.1 to function properly.\n");
+ exit(1);
+ }
MainWindow mainWindow;
- mainWindow.resize(QSize(1500, 810));
+ mainWindow.resize(QSize(1500, 850));
mainWindow.show();
app.installEventFilter(&mainWindow); // For white balance color picking.
fprintf(stderr, "Failed to lock Nageru into RAM. You probably want to\n");
fprintf(stderr, "increase \"memlock\" for your user in limits.conf\n");
fprintf(stderr, "for better realtime behavior.\n");
+ uses_mlock = false;
+ } else {
+ uses_mlock = true;
}
int rc = app.exec();