summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emulators/PC6001VX/Makefile4
-rw-r--r--emulators/PC6001VX/distinfo6
-rw-r--r--emulators/PC6001VX/patches/patch-PC6001VX.pro753
-rw-r--r--emulators/PC6001VX/patches/patch-src_Qt_audiooutputwrapper.h42
-rw-r--r--emulators/PC6001VX/patches/patch-src_Qt_osdQt.cpp70
5 files changed, 782 insertions, 93 deletions
diff --git a/emulators/PC6001VX/Makefile b/emulators/PC6001VX/Makefile
index a3f147a2357..dfb3f526384 100644
--- a/emulators/PC6001VX/Makefile
+++ b/emulators/PC6001VX/Makefile
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.6 2017/02/14 21:30:21 joerg Exp $
+# $NetBSD: Makefile,v 1.7 2017/02/24 17:33:32 tsutsui Exp $
VERSION= 2.30.0
DISTNAME= PC6001VX_${VERSION}_src
PKGNAME= ${DISTNAME:S/_src//:S/_/-/}
-PKGREVISION= 4
+PKGREVISION= 5
CATEGORIES= emulators
MASTER_SITES= http://eighttails.up.seesaa.net/bin/
diff --git a/emulators/PC6001VX/distinfo b/emulators/PC6001VX/distinfo
index c90d6ba7f08..efb269f12a4 100644
--- a/emulators/PC6001VX/distinfo
+++ b/emulators/PC6001VX/distinfo
@@ -1,7 +1,9 @@
-$NetBSD: distinfo,v 1.1 2017/01/15 11:11:01 tsutsui Exp $
+$NetBSD: distinfo,v 1.2 2017/02/24 17:33:32 tsutsui Exp $
SHA1 (PC6001VX_2.30.0_src.tar.gz) = e6be8c003b5247ea57502f55974a332bf2ab0588
RMD160 (PC6001VX_2.30.0_src.tar.gz) = 14ef360a479de18c88e8f2cba30ff9dec88869ed
SHA512 (PC6001VX_2.30.0_src.tar.gz) = 813a1c0d34263e91ace6c34ba5931e8cd8cc981385990eaece9c32ad8288ca1d4b94acbd62bad76add41f0941ad3410aaab5251977e010cf43403ab528f9d683
Size (PC6001VX_2.30.0_src.tar.gz) = 1639761 bytes
-SHA1 (patch-PC6001VX.pro) = b2cef4eb1457e2101d780db17ae9cc232180764d
+SHA1 (patch-PC6001VX.pro) = 9746ccdd8d5145829bd50159455c11ba2f187c01
+SHA1 (patch-src_Qt_audiooutputwrapper.h) = c753200af406cb135cca3b9afb507b989f169179
+SHA1 (patch-src_Qt_osdQt.cpp) = 831fd66b46aa661e324bfda96d0735a4ac2f8a73
diff --git a/emulators/PC6001VX/patches/patch-PC6001VX.pro b/emulators/PC6001VX/patches/patch-PC6001VX.pro
index 467acd4bb9d..7f1a38ffafd 100644
--- a/emulators/PC6001VX/patches/patch-PC6001VX.pro
+++ b/emulators/PC6001VX/patches/patch-PC6001VX.pro
@@ -1,113 +1,688 @@
-$NetBSD: patch-PC6001VX.pro,v 1.1 2017/01/15 11:11:01 tsutsui Exp $
+$NetBSD: patch-PC6001VX.pro,v 1.2 2017/02/24 17:33:32 tsutsui Exp $
- pull following updates (use pkg-config more properly) from the upstream:
https://github.com/eighttails/PC6001VX/commit/19367cdbaf4b624a64a962168767ae9fb1aef8c4
https://github.com/eighttails/PC6001VX/commit/d4a7179f34a6eb454bce898815ab4f5ab767577b
https://github.com/eighttails/PC6001VX/commit/fd695b875266be21fe6be22a918be6ea7cdc7f53
https://github.com/eighttails/PC6001VX/commit/179408dc05377ea3c19f504f382436874466efa5
+- also pull upstream changes to make audio thread safe
+ https://github.com/eighttails/PC6001VX/commit/06db53e9d4892e3df429917b91882987b06ca641
--- PC6001VX.pro.orig 2016-08-27 12:19:26.000000000 +0000
+++ PC6001VX.pro
-@@ -4,7 +4,7 @@
- #
- #-------------------------------------------------
-
+@@ -1,328 +1,347 @@
+-#-------------------------------------------------
+-#
+-# Project created by QtCreator 2012-01-01T00:17:09
+-#
+-#-------------------------------------------------
+-
-QT += core gui widgets network
-+QT += core gui widgets network
-
- TARGET = PC6001VX
- TEMPLATE = app
-@@ -16,24 +16,30 @@
- #Define for Qt dependent code
- DEFINES += QTP6VX
-
+-
+-TARGET = PC6001VX
+-TEMPLATE = app
+-
+-TRANSLATIONS = src/Qt/translation/PC6001VX_en.ts
+-
+-CONFIG += link_prl c++11
+-
+-#Define for Qt dependent code
+-DEFINES += QTP6VX
+-
-#Disable joystick support.If joystick support is disabled, PC6001VX does not depend on SDL2.
-+#Disable joystick support.If uncommented below, PC6001VX does not depend on SDL2.
- #DEFINES += NOJOYSTICK
-
-+#Disable joystick support.If uncommented below, PC6001VX does not depend on ffmpeg.
-+#DEFINES += NOAVI
-+
-+#Disable debug features.For low performance machine.
-+#DEFINES += NOMONITOR
-+
- #Other feature control flags.
- #DEFINES += NOSINGLEAPP
- #DEFINES += NOOPENGL
- #DEFINES += NOSOUND
+-#DEFINES += NOJOYSTICK
+-
+-#Other feature control flags.
+-#DEFINES += NOSINGLEAPP
+-#DEFINES += NOOPENGL
+-#DEFINES += NOSOUND
-#DEFINES += NOAVI
- #DEFINES += REPLAYDEBUG
- #DEFINES += AUTOSUSPEND
-
- debug:DEFINES += DEBUG
- INCLUDEPATH += src/Qt src/Qt/qtsingleapplication
-
+-#DEFINES += REPLAYDEBUG
+-#DEFINES += AUTOSUSPEND
+-
+-debug:DEFINES += DEBUG
+-INCLUDEPATH += src/Qt src/Qt/qtsingleapplication
+-
-linux{
-+#Configuration for UNIX variants
-+unix {
- #Configuration for Android
+-#Configuration for Android
-android{
-DEFINES += NOSINGLEAPP NOJOYSTICK NOMONITOR NOAVI ALWAYSFULLSCREEN AUTOSUSPEND USE_QGLWIDGET
-+android {
-+DEFINES += NOSINGLEAPP NOJOYSTICK NOMONITOR NOAVI ALWAYSFULLSCREEN AUTOSUSPEND
- #Set "ROM Path in target device" to "CUSTOM_ROM_PATH environment variable on build host"
- debug:DEFINES += CUSTOMROMPATH=\\\"$$(CUSTOM_ROM_PATH)\\\"
- }
-@@ -56,24 +62,24 @@
- #Configuration for X11(XCB)
- DEFINES += USE_X11
- QT += x11extras
+-#Set "ROM Path in target device" to "CUSTOM_ROM_PATH environment variable on build host"
+-debug:DEFINES += CUSTOMROMPATH=\\\"$$(CUSTOM_ROM_PATH)\\\"
+-}
+-pandora {
+-#Configuration for OpenPandora
+-QT += x11extras
+-
+-DEPLOY_PATH = /media/sddev/pc6001vx
+-target.path = $${DEPLOY_PATH}
+-sharedlibs.path = $${DEPLOY_PATH}
+-sharedlibs.files += $${PANDORA_SDK}/usr/lib/libX11.so.6* \
+- $${PANDORA_SDK}/usr/lib/libX11-xcb.so.1* \
+- $${PANDORA_SDK}/usr/lib/libxcb.so.1*
+-QMAKE_LFLAGS += $${QMAKE_LFLAGS_RPATH}$${DEPLOY_PATH}
+-INSTALLS += target sharedlibs
+-DEFINES += NOJOYSTICK NOOPENGL NOMONITOR NOAVI
+-#QTPLUGIN += qxcb qeglfs
+-}
+-!android:!pandora {
+-#Configuration for X11(XCB)
+-DEFINES += USE_X11
+-QT += x11extras
-LIBS += -lX11
-+QMAKE_CXXFLAGS += $$system(pkg-config --cflags x11)
-+LIBS += $$system(pkg-config --libs x11)
- }
- }
-
- #Configuration for Windows
+-}
+-}
+-
+-#Configuration for Windows
-win32:{
-+win32 {
- DEFINES += WIN32
- #On Windows, links libraries statically as long as possible.
- QMAKE_LFLAGS += -static -lpthread
- RC_ICONS += src/win32/PC6001VX.ico
-+}
-
- !contains(DEFINES, NOJOYSTICK) {
+-DEFINES += WIN32
+-#On Windows, links libraries statically as long as possible.
+-QMAKE_LFLAGS += -static -lpthread
+-RC_ICONS += src/win32/PC6001VX.ico
+-
+-!contains(DEFINES, NOJOYSTICK) {
-#On Windows, referes SDL_DIR environment variable to search SDL2
-QMAKE_CXXFLAGS += -I$$(SDL_DIR)/include -Dmain=SDL_main
-LIBS += -L$$(SDL_DIR)/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lversion -luuid
-+win32 {
-+LIBS += -lmingw32 -lSDL2main -lSDL2 -lversion -mwindows
- }
+-}
-} else {
-!contains(DEFINES, NOJOYSTICK) {
-+unix {
- QMAKE_CXXFLAGS += $$system(sdl2-config --cflags)
- LIBS += $$system(sdl2-config --libs)
- }
-@@ -82,16 +88,23 @@
- !contains(DEFINES, NOOPENGL) {
- QT += opengl
- }
-+
- !contains(DEFINES, NOSOUND) {
- QT += multimedia
- SOURCES += \
- src/Qt/wavfile.cpp \
- src/Qt/utils.cpp
- }
-+
- !contains(DEFINES, NOAVI) {
- DEFINES += __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
+-QMAKE_CXXFLAGS += $$system(sdl2-config --cflags)
+-LIBS += $$system(sdl2-config --libs)
+-}
+-}
+-
+-!contains(DEFINES, NOOPENGL) {
+-QT += opengl
+-}
+-!contains(DEFINES, NOSOUND) {
+-QT += multimedia
+-SOURCES += \
+- src/Qt/wavfile.cpp \
+- src/Qt/utils.cpp
+-}
+-!contains(DEFINES, NOAVI) {
+-DEFINES += __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
-LIBS += -lavformat -lavcodec -lswscale -lavutil -lswresample
-win32:LIBS += -lvorbisenc -lvorbis -logg -lvpx
-+win32 {
-+LIBS += -lavformat -lavcodec -lswscale -lavutil -lswresample -lvorbisenc -lvorbis -logg -lvpx
-+}
-+unix {
-+QMAKE_CXXFLAGS += $$system(pkg-config --cflags libavformat libavcodec libswscale libavutil libswresample)
-+LIBS += $$system(pkg-config --libs libavformat libavcodec libswscale libavutil libswresample)
-+}
- }
-
- SOURCES += \
+-}
+-
+-SOURCES += \
+- src/Qt/aboutdialog.cpp \
+- src/Qt/colorbutton.cpp \
+- src/Qt/configdialog.cpp \
+- src/Qt/emulationadaptor.cpp \
+- src/Qt/osdQt.cpp \
+- src/Qt/pc6001v.cpp \
+- src/Qt/qtel6.cpp \
+- src/Qt/qtsingleapplication/qtlocalpeer.cpp \
+- src/Qt/qtsingleapplication/qtlockedfile.cpp \
+- src/Qt/qtsingleapplication/qtlockedfile_unix.cpp \
+- src/Qt/qtsingleapplication/qtlockedfile_win.cpp \
+- src/Qt/qtsingleapplication/qtsingleapplication.cpp \
+- src/Qt/qtsingleapplication/qtsinglecoreapplication.cpp \
+- src/Qt/renderview.cpp \
+- src/Qt/semaphore.cpp \
+- src/Qt/thread.cpp \
+- src/breakpoint.cpp \
+- src/common.cpp \
+- src/config.cpp \
+- src/console.cpp \
+- src/cpum.cpp \
+- src/cpus.cpp \
+- src/d88.cpp \
+- src/debug.cpp \
+- src/device.cpp \
+- src/device/ay8910.cpp \
+- src/device/fmgen/fmgen.cpp \
+- src/device/fmgen/fmtimer.cpp \
+- src/device/fmgen/opm.cpp \
+- src/device/fmgen/opna.cpp \
+- src/device/mc6847.cpp \
+- src/device/pd7752.cpp \
+- src/device/pd8255.cpp \
+- src/device/ym2203.cpp \
+- src/device/z80-dbg.cpp \
+- src/device/z80.cpp \
+- src/disk.cpp \
+- src/error.cpp \
+- src/graph.cpp \
+- src/ini.cpp \
+- src/intr.cpp \
+- src/io.cpp \
+- src/joystick.cpp \
+- src/keyboard.cpp \
+- src/memory.cpp \
+- src/movie.cpp \
+- src/p6el.cpp \
+- src/p6t2.cpp \
+- src/p6vm.cpp \
+- src/pio.cpp \
+- src/replay.cpp \
+- src/schedule.cpp \
+- src/sound.cpp \
+- src/status.cpp \
+- src/tape.cpp \
+- src/vdg.cpp \
+- src/voice.cpp \
+- src/vsurface.cpp \
+- src/Qt/keypanelbutton.cpp \
+- src/Qt/keypanel.cpp \
+- src/Qt/p6vxapp.cpp \
+- src/psgfm.cpp \
+- src/device/fmgen/psg.cpp
+-
+-
+-HEADERS += \
+- openpandora/pandora_develop_environment/linux-pandora-g++/qplatformdefs.h \
+- src/Qt/aboutdialog.h \
+- src/Qt/colorbutton.h \
+- src/Qt/configdialog.h \
+- src/Qt/emulationadaptor.h \
+- src/Qt/qtel6.h \
+- src/Qt/qtsingleapplication/QtLockedFile \
+- src/Qt/qtsingleapplication/QtSingleApplication \
+- src/Qt/qtsingleapplication/qtlocalpeer.h \
+- src/Qt/qtsingleapplication/qtlockedfile.h \
+- src/Qt/qtsingleapplication/qtsingleapplication.h \
+- src/Qt/qtsingleapplication/qtsinglecoreapplication.h \
+- src/Qt/qtutil.h \
+- src/Qt/renderview.h \
+- src/Qt/utils.h \
+- src/Qt/wavfile.h \
+- src/breakpoint.h \
+- src/common.h \
+- src/config.h \
+- src/console.h \
+- src/cpum.h \
+- src/cpus.h \
+- src/d88.h \
+- src/debug.h \
+- src/device.h \
+- src/device/ay8910.h \
+- src/device/fmgen/diag.h \
+- src/device/fmgen/fmgen.h \
+- src/device/fmgen/fmgeninl.h \
+- src/device/fmgen/fmtimer.h \
+- src/device/fmgen/headers.h \
+- src/device/fmgen/misc.h \
+- src/device/fmgen/opm.h \
+- src/device/fmgen/opna.h \
+- src/device/fmgen/types.h \
+- src/device/mc6847.h \
+- src/device/pd7752.h \
+- src/device/pd8255.h \
+- src/device/psgbase.h \
+- src/device/ym2203.h \
+- src/device/z80-cdCB.h \
+- src/device/z80-cdED.h \
+- src/device/z80-cdXC.h \
+- src/device/z80-cdXX.h \
+- src/device/z80-code.h \
+- src/device/z80-tbl.h \
+- src/device/z80.h \
+- src/disk.h \
+- src/error.h \
+- src/event.h \
+- src/graph.h \
+- src/id_menu.h \
+- src/ini.h \
+- src/intr.h \
+- src/io.h \
+- src/joystick.h \
+- src/keyboard.h \
+- src/keydef.h \
+- src/log.h \
+- src/memory.h \
+- src/movie.h \
+- src/osd.h \
+- src/p6el.h \
+- src/p6t2.h \
+- src/p6vm.h \
+- src/pc6001v.h \
+- src/pio.h \
+- src/replay.h \
+- src/schedule.h \
+- src/semaphore.h \
+- src/sound.h \
+- src/status.h \
+- src/tape.h \
+- src/thread.h \
+- src/typedef.h \
+- src/vdg.h \
+- src/voice.h \
+- src/vsurface.h \
+- src/Qt/keypanelbutton.h \
+- src/Qt/keypanel.h \
+- src/Qt/p6vxapp.h \
+- src/psgfm.h \
+- src/device/fmgen/psg.h
+-
+-FORMS += \
+- src/Qt/configdialog.ui \
+- src/Qt/aboutdialog.ui
+-
+-OTHER_FILES += \
+- android/AndroidManifest.xml \
+- openpandora/PC-6001.png \
+- openpandora/PC6001VX.sh \
+- openpandora/PXML.xml \
+- openpandora/create_pnd.sh \
+- openpandora/pandora_develop_environment/environment_build.log \
+- openpandora/pandora_develop_environment/linux-pandora-g++/qmake.conf \
+- openpandora/pandora_develop_environment/pandora_develop_environment.sh \
+- openpandora/pandora_develop_environment/qtmultimedia.patch \
+- openpandora/pandora_develop_environment/qtmultimedia53.patch \
+- openpandora/pandora_develop_environment/sdk_installer_openpandora_toolchain.sh \
+- src/Qt/res/PC-6001.ico \
+- src/Qt/res/PC-6001mk2.ico \
+- src/Qt/res/PC-6001mk2SR.ico \
+- src/Qt/res/PC-6601.ico \
+- src/Qt/res/PC-6601SR.ico \
+- src/Qt/res/background.png \
+- src/Qt/res/font/fonth12.png \
+- src/Qt/res/font/fontz12.png \
+- src/Qt/res/fontz12.png \
+- src/Qt/translation/PC6001VX_en.qm \
+- src/Qt/translation/PC6001VX_en.ts \
+- src/device/fmgen/readme.txt \
+- src/win32/PC6001VX.ico \
+- win32/angle.patch \
+- win32/angle52.patch \
+- win32/buildenv.sh \
+- win32/optimize.patch \
+- win32/safemode.bat \
+- win32/toolchain.sh \
+- android/res/drawable-ldpi/icon.png \
+- win32/release.sh \
+- README.html \
+- README.mkd \
+- doc/about.png \
+- doc/firstboot.png \
+- doc/keypanel.png \
+- doc/menu.png \
+- doc/monitormode.png \
+- doc/overview.png \
+- doc/romcrc.png \
+- doc/setting_basic.png \
+- doc/setting_color1.png \
+- doc/setting_color2.png \
+- doc/setting_file.png \
+- doc/setting_folder.png \
+- doc/setting_input.png \
+- doc/setting_other.png \
+- doc/setting_screen.png \
+- doc/setting_sound.png \
+- doc/tilt.png \
+- doc/markdown.css \
+- data/PC-6001_16.png \
+- data/PC-6001_32.png \
+- data/PC-6001_48.png \
+- data/PC-6001_64.png \
+- data/PC-6001_256.png \
+- data/PC-6001.svg \
+- data/PC-6001_128.png \
+- openpandora/pandora_develop_environment/eglfs.patch \
+- openpandora/pandora_develop_environment/eglplatform.patch
+-
+-RESOURCES += \
+- src/Qt/pc6001vx.qrc
+-
+-ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
+-
+-DISTFILES += \
+- win32/qt-creator-3.3.0-MinGW-w64-MIB_TCP_STATE-not-defined-until-Vista.patch \
+- win32/qt-creator-3.5.0-Hacky-fix-for-__GNUC_PREREQ-usage.patch \
+- win32/qt-creator-3.5.0-shellquote-declspec-dllexport-for-unix-shell.patch \
+- LICENSE \
+- win32/buildrelease.sh \
+- win32/mirrorlist.mingw32
+-
+-
++#-------------------------------------------------
++#
++# Project created by QtCreator 2012-01-01T00:17:09
++#
++#-------------------------------------------------
++
++QT += core gui widgets network
++
++TARGET = PC6001VX
++TEMPLATE = app
++
++TRANSLATIONS = src/Qt/translation/PC6001VX_en.ts
++
++CONFIG += link_prl c++11
++
++#Define for Qt dependent code
++DEFINES += QTP6VX
++
++#Disable joystick support. If uncommented below, PC6001VX does not depend on SDL2.
++#DEFINES += NOJOYSTICK
++
++#Disable video capture support. If uncommented below, PC6001VX does not depend on ffmpeg.
++#DEFINES += NOAVI
++
++#Disable debug features. For low performance machine.
++#DEFINES += NOMONITOR
++
++#Other feature control flags.
++#DEFINES += NOSINGLEAPP
++#DEFINES += NOOPENGL
++#DEFINES += NOSOUND
++#DEFINES += REPLAYDEBUG
++#DEFINES += AUTOSUSPEND
++
++debug:DEFINES += DEBUG
++INCLUDEPATH += src/Qt src/Qt/qtsingleapplication
++
++#Configuration for UNIX variants
++unix {
++#Configuration for Android
++android {
++DEFINES += NOSINGLEAPP NOJOYSTICK NOMONITOR NOAVI ALWAYSFULLSCREEN AUTOSUSPEND
++#Set "ROM Path in target device" to "CUSTOM_ROM_PATH environment variable on build host"
++debug:DEFINES += CUSTOMROMPATH=\\\"$$(CUSTOM_ROM_PATH)\\\"
++}
++pandora {
++#Configuration for OpenPandora
++QT += x11extras
++
++DEPLOY_PATH = /media/sddev/pc6001vx
++target.path = $${DEPLOY_PATH}
++sharedlibs.path = $${DEPLOY_PATH}
++sharedlibs.files += $${PANDORA_SDK}/usr/lib/libX11.so.6 \
++ $${PANDORA_SDK}/usr/lib/libX11.so.6.3.0 \
++ $${PANDORA_SDK}/usr/lib/libX11-xcb.so.1 \
++ $${PANDORA_SDK}/usr/lib/libX11-xcb.so.1.0.0 \
++ $${PANDORA_SDK}/usr/lib/libxcb.so.1 \
++ $${PANDORA_SDK}/usr/lib/libxcb.so.1.1.0
++
++QMAKE_LFLAGS += $${QMAKE_LFLAGS_RPATH}$${DEPLOY_PATH}
++INSTALLS += target sharedlibs
++DEFINES += NOOPENGL NOJOYSTICK NOMONITOR NOAVI
++#QTPLUGIN += qxcb qeglfs
++}
++!android:!pandora {
++#Configuration for X11(XCB)
++DEFINES += USE_X11
++QT += x11extras
++QMAKE_CXXFLAGS += $$system(pkg-config --cflags x11)
++LIBS += $$system(pkg-config --libs x11)
++}
++}
++
++#Configuration for Windows
++win32 {
++DEFINES += WIN32
++#On Windows, links libraries statically as long as possible.
++QMAKE_LFLAGS += -static -lpthread
++RC_ICONS += src/win32/PC6001VX.ico
++}
++
++!contains(DEFINES, NOJOYSTICK) {
++win32 {
++LIBS += -lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 \
++-luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -static-libgcc
++}
++unix {
++QMAKE_CXXFLAGS += $$system(sdl2-config --cflags)
++LIBS += $$system(sdl2-config --libs)
++}
++}
++
++!contains(DEFINES, NOOPENGL) {
++QT += opengl
++}
++
++!contains(DEFINES, NOSOUND) {
++QT += multimedia
++SOURCES += \
++ src/Qt/wavfile.cpp \
++ src/Qt/utils.cpp
++}
++
++!contains(DEFINES, NOAVI) {
++DEFINES += __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
++win32 {
++LIBS += -lavformat -lavcodec -lswscale -lavutil -lswresample -lvorbisenc -lvorbis -logg -lvpx
++}
++unix {
++QMAKE_CXXFLAGS += $$system(pkg-config --cflags libavformat libavcodec libswscale libavutil libswresample)
++LIBS += $$system(pkg-config --libs libavformat libavcodec libswscale libavutil libswresample)
++}
++}
++
++SOURCES += \
++ src/Qt/aboutdialog.cpp \
++ src/Qt/colorbutton.cpp \
++ src/Qt/configdialog.cpp \
++ src/Qt/emulationadaptor.cpp \
++ src/Qt/osdQt.cpp \
++ src/Qt/pc6001v.cpp \
++ src/Qt/qtel6.cpp \
++ src/Qt/qtsingleapplication/qtlocalpeer.cpp \
++ src/Qt/qtsingleapplication/qtlockedfile.cpp \
++ src/Qt/qtsingleapplication/qtlockedfile_unix.cpp \
++ src/Qt/qtsingleapplication/qtlockedfile_win.cpp \
++ src/Qt/qtsingleapplication/qtsingleapplication.cpp \
++ src/Qt/qtsingleapplication/qtsinglecoreapplication.cpp \
++ src/Qt/renderview.cpp \
++ src/Qt/semaphore.cpp \
++ src/Qt/thread.cpp \
++ src/breakpoint.cpp \
++ src/common.cpp \
++ src/config.cpp \
++ src/console.cpp \
++ src/cpum.cpp \
++ src/cpus.cpp \
++ src/d88.cpp \
++ src/debug.cpp \
++ src/device.cpp \
++ src/device/ay8910.cpp \
++ src/device/fmgen/fmgen.cpp \
++ src/device/fmgen/fmtimer.cpp \
++ src/device/fmgen/opm.cpp \
++ src/device/fmgen/opna.cpp \
++ src/device/mc6847.cpp \
++ src/device/pd7752.cpp \
++ src/device/pd8255.cpp \
++ src/device/ym2203.cpp \
++ src/device/z80-dbg.cpp \
++ src/device/z80.cpp \
++ src/disk.cpp \
++ src/error.cpp \
++ src/graph.cpp \
++ src/ini.cpp \
++ src/intr.cpp \
++ src/io.cpp \
++ src/joystick.cpp \
++ src/keyboard.cpp \
++ src/memory.cpp \
++ src/movie.cpp \
++ src/p6el.cpp \
++ src/p6t2.cpp \
++ src/p6vm.cpp \
++ src/pio.cpp \
++ src/replay.cpp \
++ src/schedule.cpp \
++ src/sound.cpp \
++ src/status.cpp \
++ src/tape.cpp \
++ src/vdg.cpp \
++ src/voice.cpp \
++ src/vsurface.cpp \
++ src/Qt/keypanelbutton.cpp \
++ src/Qt/keypanel.cpp \
++ src/Qt/p6vxapp.cpp \
++ src/psgfm.cpp \
++ src/device/fmgen/psg.cpp
++
++
++HEADERS += \
++ openpandora/pandora_develop_environment/linux-pandora-g++/qplatformdefs.h \
++ src/Qt/aboutdialog.h \
++ src/Qt/colorbutton.h \
++ src/Qt/configdialog.h \
++ src/Qt/emulationadaptor.h \
++ src/Qt/qtel6.h \
++ src/Qt/qtsingleapplication/QtLockedFile \
++ src/Qt/qtsingleapplication/QtSingleApplication \
++ src/Qt/qtsingleapplication/qtlocalpeer.h \
++ src/Qt/qtsingleapplication/qtlockedfile.h \
++ src/Qt/qtsingleapplication/qtsingleapplication.h \
++ src/Qt/qtsingleapplication/qtsinglecoreapplication.h \
++ src/Qt/qtutil.h \
++ src/Qt/renderview.h \
++ src/Qt/utils.h \
++ src/Qt/wavfile.h \
++ src/breakpoint.h \
++ src/common.h \
++ src/config.h \
++ src/console.h \
++ src/cpum.h \
++ src/cpus.h \
++ src/d88.h \
++ src/debug.h \
++ src/device.h \
++ src/device/ay8910.h \
++ src/device/fmgen/diag.h \
++ src/device/fmgen/fmgen.h \
++ src/device/fmgen/fmgeninl.h \
++ src/device/fmgen/fmtimer.h \
++ src/device/fmgen/headers.h \
++ src/device/fmgen/misc.h \
++ src/device/fmgen/opm.h \
++ src/device/fmgen/opna.h \
++ src/device/fmgen/types.h \
++ src/device/mc6847.h \
++ src/device/pd7752.h \
++ src/device/pd8255.h \
++ src/device/psgbase.h \
++ src/device/ym2203.h \
++ src/device/z80-cdCB.h \
++ src/device/z80-cdED.h \
++ src/device/z80-cdXC.h \
++ src/device/z80-cdXX.h \
++ src/device/z80-code.h \
++ src/device/z80-tbl.h \
++ src/device/z80.h \
++ src/disk.h \
++ src/error.h \
++ src/event.h \
++ src/graph.h \
++ src/id_menu.h \
++ src/ini.h \
++ src/intr.h \
++ src/io.h \
++ src/joystick.h \
++ src/keyboard.h \
++ src/keydef.h \
++ src/log.h \
++ src/memory.h \
++ src/movie.h \
++ src/osd.h \
++ src/p6el.h \
++ src/p6t2.h \
++ src/p6vm.h \
++ src/pc6001v.h \
++ src/pio.h \
++ src/replay.h \
++ src/schedule.h \
++ src/semaphore.h \
++ src/sound.h \
++ src/status.h \
++ src/tape.h \
++ src/thread.h \
++ src/typedef.h \
++ src/vdg.h \
++ src/voice.h \
++ src/vsurface.h \
++ src/Qt/keypanelbutton.h \
++ src/Qt/keypanel.h \
++ src/Qt/p6vxapp.h \
++ src/psgfm.h \
++ src/device/fmgen/psg.h \
++ src/Qt/audiooutputwrapper.h
++
++FORMS += \
++ src/Qt/configdialog.ui \
++ src/Qt/aboutdialog.ui
++
++OTHER_FILES += \
++ android/AndroidManifest.xml \
++ openpandora/PC-6001.png \
++ openpandora/PC6001VX.sh \
++ openpandora/PXML.xml \
++ openpandora/create_pnd.sh \
++ openpandora/pandora_develop_environment/environment_build.log \
++ openpandora/pandora_develop_environment/linux-pandora-g++/qmake.conf \
++ openpandora/pandora_develop_environment/pandora_develop_environment.sh \
++ openpandora/pandora_develop_environment/qtmultimedia.patch \
++ openpandora/pandora_develop_environment/qtmultimedia53.patch \
++ openpandora/pandora_develop_environment/sdk_installer_openpandora_toolchain.sh \
++ src/Qt/res/PC-6001.ico \
++ src/Qt/res/PC-6001mk2.ico \
++ src/Qt/res/PC-6001mk2SR.ico \
++ src/Qt/res/PC-6601.ico \
++ src/Qt/res/PC-6601SR.ico \
++ src/Qt/res/background.png \
++ src/Qt/res/font/fonth12.png \
++ src/Qt/res/font/fontz12.png \
++ src/Qt/res/fontz12.png \
++ src/Qt/translation/PC6001VX_en.qm \
++ src/Qt/translation/PC6001VX_en.ts \
++ src/device/fmgen/readme.txt \
++ src/win32/PC6001VX.ico \
++ win32/angle.patch \
++ win32/angle52.patch \
++ win32/buildenv.sh \
++ win32/optimize.patch \
++ win32/safemode.bat \
++ win32/toolchain.sh \
++ android/res/drawable-ldpi/icon.png \
++ win32/release.sh \
++ README.html \
++ README.mkd \
++ doc/about.png \
++ doc/firstboot.png \
++ doc/keypanel.png \
++ doc/menu.png \
++ doc/monitormode.png \
++ doc/overview.png \
++ doc/romcrc.png \
++ doc/setting_basic.png \
++ doc/setting_color1.png \
++ doc/setting_color2.png \
++ doc/setting_file.png \
++ doc/setting_folder.png \
++ doc/setting_input.png \
++ doc/setting_other.png \
++ doc/setting_screen.png \
++ doc/setting_sound.png \
++ doc/tilt.png \
++ doc/markdown.css \
++ data/PC-6001_16.png \
++ data/PC-6001_32.png \
++ data/PC-6001_48.png \
++ data/PC-6001_64.png \
++ data/PC-6001_256.png \
++ data/PC-6001.svg \
++ data/PC-6001_128.png \
++ openpandora/pandora_develop_environment/eglfs.patch \
++ openpandora/pandora_develop_environment/eglplatform.patch
++
++RESOURCES += \
++ src/Qt/pc6001vx.qrc
++
++ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
++
++DISTFILES += \
++ win32/qt-creator-3.3.0-MinGW-w64-MIB_TCP_STATE-not-defined-until-Vista.patch \
++ win32/qt-creator-3.5.0-Hacky-fix-for-__GNUC_PREREQ-usage.patch \
++ win32/qt-creator-3.5.0-shellquote-declspec-dllexport-for-unix-shell.patch \
++ LICENSE \
++ win32/buildrelease.sh \
++ win32/mirrorlist.mingw32
++
++
diff --git a/emulators/PC6001VX/patches/patch-src_Qt_audiooutputwrapper.h b/emulators/PC6001VX/patches/patch-src_Qt_audiooutputwrapper.h
new file mode 100644
index 00000000000..eb6aea41362
--- /dev/null
+++ b/emulators/PC6001VX/patches/patch-src_Qt_audiooutputwrapper.h
@@ -0,0 +1,42 @@
+$NetBSD: patch-src_Qt_audiooutputwrapper.h,v 1.1 2017/02/24 17:33:32 tsutsui Exp $
+
+- pull upstream changes to make QAudioOutput calls thread safe
+
+--- src/Qt/audiooutputwrapper.h.orig 2017-02-21 14:44:21.000000000 +0000
++++ src/Qt/audiooutputwrapper.h
+@@ -0,0 +1,35 @@
++#ifndef AUDIOOUTPUTWRAPPER_H
++#define AUDIOOUTPUTWRAPPER_H
++#ifndef NOSOUND
++#include <QObject>
++#include <QPointer>
++#include <QAudioOutput>
++
++// QAudioOutputのラッパークラス。
++// P6Vのコードではサウンド制御が複数のスレッドから呼ばれるが、
++// Qtの規約により実処理はオブジェクトの所属スレッドで実施する必要があるため
++// サウンド制御の諸APIをinvokeMethod経由で呼べるようSLOTにする。
++class AudioOutputWrapper : public QObject
++{
++ Q_OBJECT
++public:
++ explicit AudioOutputWrapper(const QAudioDeviceInfo& info,
++ const QAudioFormat& format, QObject* parent = NULL)
++ : QObject(parent)
++ , AudioOutput(new QAudioOutput(info, format, this)) {}
++
++public slots:
++ // 下記のメソッドはinvokeMethodから呼ぶこと。
++ QPointer<QIODevice> start() { return AudioOutput->start(); }
++ void suspend() { AudioOutput->suspend(); }
++ void resume() { AudioOutput->resume(); }
++ void stop() { AudioOutput->stop(); }
++
++public:
++ QAudio::State state() const { return AudioOutput->state(); }
++
++private:
++ QAudioOutput* AudioOutput;
++};
++#endif // NOSOUND
++#endif // AUDIOOUTPUTWRAPPER_H
diff --git a/emulators/PC6001VX/patches/patch-src_Qt_osdQt.cpp b/emulators/PC6001VX/patches/patch-src_Qt_osdQt.cpp
new file mode 100644
index 00000000000..69cc4c664bf
--- /dev/null
+++ b/emulators/PC6001VX/patches/patch-src_Qt_osdQt.cpp
@@ -0,0 +1,70 @@
+$NetBSD: patch-src_Qt_osdQt.cpp,v 1.1 2017/02/24 17:33:32 tsutsui Exp $
+
+- pull upstream changes:
+ - fix a missed comment for FDD access wait
+ - make QAudioOutput calls thread safe
+
+--- src/Qt/osdQt.cpp.orig 2016-08-27 12:19:26.000000000 +0000
++++ src/Qt/osdQt.cpp
+@@ -46,8 +46,9 @@ QVector<QRgb> PaletteTable;
+
+ #ifndef NOSOUND
+ //サウンド関連
++#include "audiooutputwrapper.h"
+ QPointer<QIODevice> audioBuffer = NULL;
+-QPointer<QAudioOutput> audioOutput = NULL;
++QPointer<AudioOutputWrapper> audioOutput = NULL;
+ #endif
+
+ //ジョイスティック関連
+@@ -256,6 +257,7 @@ const char *MsgIni[] = {
+ QT_TRANSLATE_NOOP("PC6001VX", "オーバークロック率 (1-1000)%"),
+ QT_TRANSLATE_NOOP("PC6001VX", "CRCチェック Yes:有効 No:無効"),
+ QT_TRANSLATE_NOOP("PC6001VX", "ROMパッチ Yes:あてる No:あてない"),
++ QT_TRANSLATE_NOOP("PC6001VX", "FDDアクセスウェイト Yes:有効 No:無効"),
+ // [DISPLAY]
+ QT_TRANSLATE_NOOP("PC6001VX", "MODE4カラーモード 0:モノクロ 1:赤/青 2:青/赤 3:ピンク/緑 4:緑/ピンク"),
+ QT_TRANSLATE_NOOP("PC6001VX", "スキャンライン Yes:あり No:なし"),
+@@ -1532,7 +1534,7 @@ bool OSD_OpenAudio( void *obj, CBF_SND c
+ format = info.nearestFormat(format);
+ }
+
+- audioOutput = new QAudioOutput(info, format);
++ audioOutput = new AudioOutputWrapper(info, format);
+ //#PENDING これではグローバルボリュームを変えてしまう?
+ //audioOutput->setVolume(0.5);
+
+@@ -1553,7 +1555,7 @@ void OSD_CloseAudio( void )
+ {
+ #ifndef NOSOUND
+ if(audioOutput){
+- audioOutput->stop();
++ QMetaObject::invokeMethod(audioOutput, "stop");
+ }
+ #endif
+ }
+@@ -1570,9 +1572,13 @@ void OSD_StartAudio( void )
+ #ifndef NOSOUND
+ if(audioOutput){
+ if(audioOutput->state() == QAudio::SuspendedState){
+- audioOutput->resume();
++ QMetaObject::invokeMethod(audioOutput, "resume");
+ } else {
+- audioBuffer = audioOutput->start();
++ //呼び元スレッドによってコネクションタイプを変える(戻り値を取得できるようにするために必要)
++ Qt::ConnectionType cType = QThread::currentThread() == qApp->thread() ?
++ Qt::DirectConnection : Qt::BlockingQueuedConnection;
++ QMetaObject::invokeMethod(audioOutput, "start", cType,
++ Q_RETURN_ARG(QPointer<QIODevice>, audioBuffer));
+ }
+ }
+ #endif
+@@ -1589,7 +1595,7 @@ void OSD_StopAudio( void )
+ {
+ #ifndef NOSOUND
+ if(audioOutput){
+- audioOutput->suspend();
++ QMetaObject::invokeMethod(audioOutput, "suspend");
+ }
+ #endif
+ }