+commit cd5cb8e89fb3a5bdf82fe7bacd6f7967dc56282f
+Author: K.Ohta <whatisthis.sowhat@gmail.com>
+Date: Wed Jun 8 08:06:31 2016 +0900
+
+ [UI][Qt][MOVIE_SAVER] Fix typo.
+
+commit 1ae7723ffc46228182eba985cb3c63dc029208f4
+Author: K.Ohta <whatisthis.sowhat@gmail.com>
+Date: Wed Jun 8 07:46:20 2016 +0900
+
+ [*nix] Update installer script.
+
+commit 86d5ec29dee494bcf71a936dd3655cadeb457e5a
+Author: K.Ohta <whatisthis.sowhat@gmail.com>
+Date: Wed Jun 8 07:44:43 2016 +0900
+
+ [DOC] Update documents.
+
commit 2142d5c7426e21cfeedbaea0450f238f8b4d7d38
Author: K.Ohta <whatisthis.sowhat@gmail.com>
Date: Wed Jun 8 07:27:40 2016 +0900
Additional INFO:
GNU/Linux with AMD64 binaries and Win32 with MINGW binaries are avaiable, packed with 7zip'ed format:
-
+ https://www.sendspace.com/file/pja2z2
or
-
+ http://www1.axfc.net/u/3676696
- SIZE:
- MD5SUM:
- SHA256SUM:
+ SIZE: 85332844
+ MD5SUM: 5d577985a134bf6661d6cf15407a89aa
+ SHA256SUM: 573dd2eb3b99cfc6098b27a6a6ab835030752c2fb95e96e1b84a9eb120a62588
2.Background
Common Source Code Project (CSP) is good emulator writing.
MAKEFLAGS_LIB_CXX="-flto -g -O2 ${MAKEFLAGS_BASE} -DNDEBUG"
MAKEFLAGS_LIB_CC="-flto -g -O2 ${MAKEFLAGS_BASE} -DNDEBUG"
-MAKEFLAGS_GENERAL="-j3"
+MAKEFLAGS_GENERAL="-j6"
BUILD_TYPE="Relwithdebinfo"
-CMAKE_LINKFLAG="-g -flto=4 -fwhole-program -O2 ${MAKEFLAGS_BASE}"
-CMAKE_DLL_LINKFLAG="-g -flto=4 -O2 ${MAKEFLAGS_BASE}"
+CMAKE_LINKFLAG="-g -flto=6 -fwhole-program -O2 ${MAKEFLAGS_BASE}"
+CMAKE_DLL_LINKFLAG="-g -flto=6 -O2 ${MAKEFLAGS_BASE}"
+
+
LIB_INSTALL="/usr/local/lib/x86_64-linux-gnu/"
#LIB_INSTALL="/usr/local/lib/"
#LIB_INSTALL="/usr/lib/x86_64-linux-gnu/"
-
-CMAKE_APPENDFLAG="-DUSE_MOVIE_SAVER=ON -DUSE_MOVIE_LOADER=ON -DCMAKE_AR:STRING=gcc-ar-6 -DCMAKE_NM:STRING=gcc-nm-6 -DCMAKE_RANLIB:STRING=gcc-ranlib-6"
+CMAKE_APPENDFLAG="-DLIBAV_ROOT_DIR=/usr/local/ffmpeg-2.8.7"
+CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DUSE_MOVIE_SAVER=ON -DUSE_MOVIE_LOADER=ON -DCMAKE_AR:STRING=gcc-ar-6 -DCMAKE_NM:STRING=gcc-nm-6 -DCMAKE_RANLIB:STRING=gcc-ranlib-6"
include(simd-x86)
-set(BUNDLE_LIBS
-
- ${OPENGL_LIBRARY}
- ${OPENCL_LIBRARY}
- ${GETTEXT_LIBRARY}
- ${OPENMP_LIBRARY}
- ${LIBAV_LIBRARIES}
- ${SDL_LIBS}
- ${LIBAV_LIBRARIES}
- ${ADDITIONAL_LIBRARIES}
-)
if(WIN32)
- set(BUNDLE_LIBS ${BUNDLE_LIBS})
+ set(BUNDLE_LIBS
+ ${OPENGL_LIBRARY}
+ ${OPENCL_LIBRARY}
+ ${GETTEXT_LIBRARY}
+ ${OPENMP_LIBRARY}
+ ${LIBAV_LIBRARIES}
+ ${SDL_LIBS}
+ ${LIBAV_LIBRARIES}
+ ${ADDITIONAL_LIBRARIES}
+ )
+
else()
+ set(BUNDLE_LIBS
+ ${OPENGL_LIBRARY}
+ ${OPENCL_LIBRARY}
+ ${GETTEXT_LIBRARY}
+ ${OPENMP_LIBRARY}
+ ${SDL_LIBS}
+ ${LIBAV_LIBRARIES}
+ ${ADDITIONAL_LIBRARIES}
+ )
+
set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPgui -lCSPemu_utils -lCSPavio)
+# set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPavcodec -lCSPavfilter -lCSPavformat -lCSPavutil -lCSPswresample -lCSPswscale -lCSPpostproc )
+
endif()
if(USE_QT_5)
exit 0
-for ii in libCSPavio libCSPgui libCSPosd libCSPemu_utils; do
- cd $ii/build-win32
- make clean
- cd ../..
-done
+#for ii in libCSPavio libCSPgui libCSPosd libCSPemu_utils; do
+# cd $ii/build-win32
+# make clean
+# cd ../..
+#done
exit 0
extern DWORD GetLongPathName(LPCTSTR lpszShortPath, LPTSTR lpszLongPath, DWORD cchBuffer);
#endif
#if defined(_USE_QT)
- extern std::string cpp_homedir;
- extern std::string my_procname;
+ extern std::string DLL_PREFIX cpp_homedir;
+ extern std::string DLL_PREFIX my_procname;
#endif
-uint32_t EndianToLittle_DWORD(uint32_t x)
+uint32_t DLL_PREFIX EndianToLittle_DWORD(uint32_t x)
{
#if defined(__LITTLE_ENDIAN__)
return x;
#endif
}
-uint16_t EndianToLittle_WORD(uint16_t x)
+uint16_t DLL_PREFIX EndianToLittle_WORD(uint16_t x)
{
#if defined(__LITTLE_ENDIAN__)
return x;
}
#ifndef _MSC_VER
-int max(int a, int b)
+int DLL_PREFIX max(int a, int b)
{
if(a > b) {
return a;
}
}
-unsigned int max(unsigned int a, unsigned int b)
+unsigned DLL_PREFIX int max(unsigned int a, unsigned int b)
{
if(a > b) {
return a;
}
}
-int min(int a, int b)
+int DLL_PREFIX min(int a, int b)
{
if(a < b) {
return a;
}
}
-unsigned int min(unsigned int a, unsigned int b)
+unsigned int DLL_PREFIX min(unsigned int a, unsigned int b)
{
if(a < b) {
return a;
// }
//}
-errno_t my_strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource)
+errno_t DLL_PREFIX my_strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource)
{
strcpy(strDestination, strSource);
return 0;
}
-errno_t my_tcscpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource)
+errno_t DLL_PREFIX my_tcscpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource)
{
_tcscpy(strDestination, strSource);
return 0;
}
-errno_t my_strncpy_s(char *strDestination, size_t numberOfElements, const char *strSource, size_t count)
+errno_t DLL_PREFIX my_strncpy_s(char *strDestination, size_t numberOfElements, const char *strSource, size_t count)
{
strncpy(strDestination, strSource, count);
return 0;
}
-errno_t my_tcsncpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource, size_t count)
+errno_t DLL_PREFIX my_tcsncpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource, size_t count)
{
_tcsncpy(strDestination, strSource, count);
return 0;
}
-char *my_strtok_s(char *strToken, const char *strDelimit, char **context)
+char *DLL_PREFIX my_strtok_s(char *strToken, const char *strDelimit, char **context)
{
return strtok(strToken, strDelimit);
}
-_TCHAR *my_tcstok_s(_TCHAR *strToken, const char *strDelimit, _TCHAR **context)
+_TCHAR *DLL_PREFIX my_tcstok_s(_TCHAR *strToken, const char *strDelimit, _TCHAR **context)
{
return _tcstok(strToken, strDelimit);
}
-int my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...)
+int DLL_PREFIX my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...)
{
va_list ap;
va_start(ap, format);
return result;
}
-int my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...)
+int DLL_PREFIX my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...)
{
va_list ap;
va_start(ap, format);
return result;
}
-int my_vsprintf_s(char *buffer, size_t numberOfElements, const char *format, va_list argptr)
+int DLL_PREFIX my_vsprintf_s(char *buffer, size_t numberOfElements, const char *format, va_list argptr)
{
return vsprintf(buffer, format, argptr);
}
-int my_vstprintf_s(_TCHAR *buffer, size_t numberOfElements, const _TCHAR *format, va_list argptr)
+int DLL_PREFIX my_vstprintf_s(_TCHAR *buffer, size_t numberOfElements, const _TCHAR *format, va_list argptr)
{
return _vstprintf(buffer, format, argptr);
}
#endif
#ifndef _WIN32
-BOOL MyWritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName)
+BOOL DLL_PREFIX MyWritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName)
{
BOOL result = FALSE;
FILEIO* fio_i = new FILEIO();
return got_str;
}
-DWORD MyGetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName)
+DWORD DLL_PREFIX MyGetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName)
{
_TCHAR *lpp = (_TCHAR *)lpReturnedString;
if(lpDefault != NULL) {
return strlen(lpp);
}
-UINT MyGetPrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName)
+UINT DLL_PREFIX MyGetPrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName)
{
int i;
char sstr[128];
};
#endif
-const _TCHAR *get_application_path()
+const _TCHAR *DLL_PREFIX get_application_path()
{
static _TCHAR app_path[_MAX_PATH];
static bool initialized = false;
return (const _TCHAR *)app_path;
}
-const _TCHAR *create_local_path(const _TCHAR *format, ...)
+const _TCHAR *DLL_PREFIX create_local_path(const _TCHAR *format, ...)
{
static _TCHAR file_path[8][_MAX_PATH];
static unsigned int table_index = 0;
return (const _TCHAR *)file_path[output_index];
}
-void create_local_path(_TCHAR *file_path, int length, const _TCHAR *format, ...)
+void DLL_PREFIX create_local_path(_TCHAR *file_path, int length, const _TCHAR *format, ...)
{
_TCHAR file_name[_MAX_PATH];
va_list ap;
return create_local_path(_T("%d-%0.2d-%0.2d_%0.2d-%0.2d-%0.2d.%s"), cur_time.year, cur_time.month, cur_time.day, cur_time.hour, cur_time.minute, cur_time.second, extension);
}
-void create_date_file_path(_TCHAR *file_path, int length, const _TCHAR *extension)
+void DLL_PREFIX create_date_file_path(_TCHAR *file_path, int length, const _TCHAR *extension)
{
my_tcscpy_s(file_path, length, create_date_file_path(extension));
}
-bool check_file_extension(const _TCHAR *file_path, const _TCHAR *ext)
+bool DLL_PREFIX check_file_extension(const _TCHAR *file_path, const _TCHAR *ext)
{
#if defined(_USE_QT)
std::string s_fpath = file_path;
#endif
}
-const _TCHAR *get_file_path_without_extensiton(const _TCHAR *file_path)
+const _TCHAR *DLL_PREFIX get_file_path_without_extensiton(const _TCHAR *file_path)
{
static _TCHAR path[8][_MAX_PATH];
static unsigned int table_index = 0;
return (const _TCHAR *)path[output_index];
}
-void get_long_full_path_name(const _TCHAR* src, _TCHAR* dst, size_t dst_len)
+void DLL_PREFIX get_long_full_path_name(const _TCHAR* src, _TCHAR* dst, size_t dst_len)
{
_TCHAR tmp[_MAX_PATH];
#endif
}
-const _TCHAR* get_parent_dir(const _TCHAR* file)
+const _TCHAR* DLL_PREFIX get_parent_dir(const _TCHAR* file)
{
static _TCHAR path[8][_MAX_PATH];
static unsigned int table_index = 0;
return path[output_index];
}
-const _TCHAR *create_string(const _TCHAR* format, ...)
+const _TCHAR *DLL_PREFIX create_string(const _TCHAR* format, ...)
{
static _TCHAR buffer[8][1024];
static unsigned int table_index = 0;
return (const _TCHAR *)buffer[output_index];
}
-uint32_t get_crc32(uint8_t data[], int size)
+uint32_t DLL_PREFIX get_crc32(uint8_t data[], int size)
{
static bool initialized = false;
static uint32_t table[256];
return ~c;
}
-uint16_t jis_to_sjis(uint16_t jis)
+uint16_t DLL_PREFIX jis_to_sjis(uint16_t jis)
{
pair_t tmp;
return tmp.w.l;
}
-int decibel_to_volume(int decibel)
+int DLL_PREFIX decibel_to_volume(int decibel)
{
// +1 equals +0.5dB (same as fmgen)
return (int)(1024.0 * pow(10.0, decibel / 40.0) + 0.5);
}
-int32_t apply_volume(int32_t sample, int volume)
+int32_t DLL_PREFIX apply_volume(int32_t sample, int volume)
{
// int64_t output;
int32_t output;
return output;
}
-void get_host_time(cur_time_t* cur_time)
+void DLL_PREFIX get_host_time(cur_time_t* cur_time)
{
#ifdef _WIN32
SYSTEMTIME sTime;
#elif defined(Q_OS_WIN) || defined(__WIN32) || defined(__WIN64)
#define CSP_OS_GCC_WINDOWS
#define CSP_OS_WINDOWS
+ #define DLL_PREFIX __declspec(dllexport)
+ #define DLL_PREFIX_I __declspec(dllimport)
#else
#define CSP_OS_GCC_GENERIC
#define CSP_OS_GENERIC
+ #define DLL_PREFIX
+ #define DLL_PREFIX_I
#endif
#if defined(__clang__)
#define __CSP_COMPILER_CLANG
#define __CSP_COMPILER_GCC
#endif
#define SUPPORT_CPLUSPLUS_11
+#else
+ #define DLL_PREFIX
+ #define DLL_PREFIX_I
#endif
+
#ifndef SUPPORT_CPLUSPLUS_11
#if defined(__cplusplus) && (__cplusplus > 199711L)
#define SUPPORT_CPLUSPLUS_11
typedef int errno_t;
#endif
// errno_t my_tfopen_s(FILE** pFile, const _TCHAR *filename, const _TCHAR *mode);
- errno_t my_strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
- errno_t my_tcscpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource);
- errno_t my_strncpy_s(char *strDestination, size_t numberOfElements, const char *strSource, size_t count);
- errno_t my_tcsncpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource, size_t count);
- char *my_strtok_s(char *strToken, const char *strDelimit, char **context);
- _TCHAR *my_tcstok_s(_TCHAR *strToken, const char *strDelimit, _TCHAR **context);
+ errno_t DLL_PREFIX my_strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
+ errno_t DLL_PREFIX my_tcscpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource);
+ errno_t DLL_PREFIX my_strncpy_s(char *strDestination, size_t numberOfElements, const char *strSource, size_t count);
+ errno_t DLL_PREFIX my_tcsncpy_s(_TCHAR *strDestination, size_t numberOfElements, const _TCHAR *strSource, size_t count);
+ char * DLL_PREFIX my_strtok_s(char *strToken, const char *strDelimit, char **context);
+ _TCHAR * DLL_PREFIX my_tcstok_s(_TCHAR *strToken, const char *strDelimit, _TCHAR **context);
#define my_fprintf_s fprintf
- int my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...);
- int my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...);
- int my_vsprintf_s(char *buffer, size_t numberOfElements, const char *format, va_list argptr);
- int my_vstprintf_s(_TCHAR *buffer, size_t numberOfElements, const _TCHAR *format, va_list argptr);
+ int DLL_PREFIX my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...);
+ int DLL_PREFIX my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...);
+ int DLL_PREFIX my_vsprintf_s(char *buffer, size_t numberOfElements, const char *format, va_list argptr);
+ int DLL_PREFIX my_vstprintf_s(_TCHAR *buffer, size_t numberOfElements, const _TCHAR *format, va_list argptr);
#else
// #define my_tfopen_s _tfopen_s
#define my_strcpy_s strcpy_s
#pragma pack()
// file path
-const _TCHAR *get_application_path();
-const _TCHAR *create_local_path(const _TCHAR *format, ...);
-void create_local_path(_TCHAR *file_path, int length, const _TCHAR *format, ...);
-const _TCHAR *create_date_file_path(const _TCHAR *extension);
-void create_date_file_path(_TCHAR *file_path, int length, const _TCHAR *extension);
-bool check_file_extension(const _TCHAR *file_path, const _TCHAR *ext);
-const _TCHAR *get_file_path_without_extensiton(const _TCHAR *file_path);
-void get_long_full_path_name(const _TCHAR* src, _TCHAR* dst, size_t dst_len);
-const _TCHAR* get_parent_dir(const _TCHAR* file);
+const _TCHAR * DLL_PREFIX get_application_path();
+const _TCHAR * DLL_PREFIX create_local_path(const _TCHAR *format, ...);
+void DLL_PREFIX create_local_path(_TCHAR *file_path, int length, const _TCHAR *format, ...);
+const _TCHAR * DLL_PREFIX create_date_file_path(const _TCHAR *extension);
+void DLL_PREFIX create_date_file_path(_TCHAR *file_path, int length, const _TCHAR *extension);
+bool DLL_PREFIX check_file_extension(const _TCHAR *file_path, const _TCHAR *ext);
+const _TCHAR * DLL_PREFIX get_file_path_without_extensiton(const _TCHAR *file_path);
+void DLL_PREFIX get_long_full_path_name(const _TCHAR* src, _TCHAR* dst, size_t dst_len);
+const _TCHAR* DLL_PREFIX get_parent_dir(const _TCHAR* file);
// misc
-const _TCHAR *create_string(const _TCHAR* format, ...);
-uint32_t get_crc32(uint8_t data[], int size);
-uint16_t jis_to_sjis(uint16_t jis);
+const _TCHAR * DLL_PREFIX create_string(const _TCHAR* format, ...);
+uint32_t DLL_PREFIX get_crc32(uint8_t data[], int size);
+uint16_t DLL_PREFIX jis_to_sjis(uint16_t jis);
-int decibel_to_volume(int decibel);
-int32_t apply_volume(int32_t sample, int volume);
+int DLL_PREFIX decibel_to_volume(int decibel);
+int32_t DLL_PREFIX apply_volume(int32_t sample, int volume);
#define array_length(array) (sizeof(array) / sizeof(array[0]))
bool load_state(void *f);
} cur_time_t;
-void get_host_time(cur_time_t* cur_time);
+void DLL_PREFIX get_host_time(cur_time_t* cur_time);
#endif
#define MAX_BINARY 1
#endif
-void initialize_config();
-void load_config(const _TCHAR* config_path);
-void save_config(const _TCHAR* config_path);
-void save_config_state(void *f);
-bool load_config_state(void *f);
+void DLL_PREFIX initialize_config();
+void DLL_PREFIX load_config(const _TCHAR* config_path);
+void DLL_PREFIX save_config(const _TCHAR* config_path);
+void DLL_PREFIX save_config_state(void *f);
+bool DLL_PREFIX load_config_state(void *f);
/*
${s_qt_avio_headers_MOC}
)
-#add_library(CSPgui SHARED
+#add_library(CSPavio SHARED
# ${s_qt_avio_srcs}
# ${s_qt_avio_headers_MOC}
-# )
+#)
+
#target_link_libraries(CSPavio PUBLIC
-#${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPavio/build-win32/qt/avio/CSPavio.dll
-# Qt5::Core
-# Qt5::Gui
-# Qt5::OpenGL
-# Qt5::Svg
-# Qt5::Widgets
+# ${LIBAV_LIBRARIES}
+# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPavio/build-win32/qt/avio/CSPavio.dll
+# Qt5::Core
+# Qt5::Gui
+# Qt5::Widgets
# )
#QT5_USE_MODULES(CSPavio Widgets Core Gui OpenGL)
#
#generate_export_header(CSPavio
-# BASE_NAME CSPavio
+# BASE_NAME CSPavio
# EXPORT_MACRO_NAME CSPavio_EXPORT
# EXPORT_FILE_NAME CSPavio_Export.h
# STATIC_DEFINE CSPavio_BUILT_AS_STATIC
#)
else()
+#add_library(CSPavio SHARED
+# ${s_qt_avio_srcs}
+# ${s_qt_avio_headers_MOC}
+#)
+#SET(CMAKE_FIND_LIBRARY_SUFFIXES .a)
+#find_library(LIBAV_STATIC_LIBAVCODEC avcodec)
+#find_library(LIBAV_STATIC_LIBAVDEVICE avdevice)
+#find_library(LIBAV_STATIC_LIBAVFILTER avfilter)
+#find_library(LIBAV_STATIC_LIBAVFORMAT avformat)
+#find_library(LIBAV_STATIC_LIBAVUTIL avutil)
+#find_library(LIBAV_STATIC_LIBAVRESAMPLE avresample)
+#find_library(LIBAV_STATIC_LIBSWRESAMPLE swresample)
+#find_library(LIBAV_STATIC_LIBSWSCALE swscale)
+#find_library(LIBAV_STATIC_LIBPOSTPROC postproc)
+
+
+#if(NOT (LIBAV_STATIC_LIBAVCODEC-NOTFOUND OR LIBAV_STATIC_LIBAVDEVICE-NOTFOUND
+# OR LIBAV_STATIC_LIBAVFILTER-NOTFOUND OR LIBAV_STATIC_LIBAVFORMAT-NOTFOUND
+# OR LIBAV_STATIC_LIBAVUTIL-NOTFOUND OR LIBAV_STATIC_LIBAVRESAMPLE-NOTFOUND
+# OR LIBAV_STATIC_LIBSWRESAMPLE-NOTFOUND OR LIBAV_STATIC_LIBSWSCAPE-NOTFOUND
+# OR LIBAV_STATIC_LIBPOSTPROC-NOTFOUND ))
add_library(CSPavio SHARED
${s_qt_avio_srcs}
${s_qt_avio_headers_MOC}
-)
+ )
+#set(LIBAV_STATIC_PREFIX /usr/local/ffmpeg-2.8.7/lib)
+#target_link_libraries(CSPavio LINK_PRIVATE
+# ${LIBAV_STATIC_PREFIX}/libavcodec.a
+# ${LIBAV_STATIC_PREFIX}/libavfilter.a
+# ${LIBAV_STATIC_PREFIX}/libavformat.a
+# ${LIBAV_STATIC_PREFIX}/libavutil.a
+# avresample
+# ${LIBAV_STATIC_PREFIX}/libswresample.a
+# ${LIBAV_STATIC_PREFIX}/libswscale.a
+# ${LIBAV_STATIC_PREFIX}/libpostproc.a
+# )
+#else()
+# add_library(CSPavio SHARED
+# ${s_qt_avio_srcs}
+# ${s_qt_avio_headers_MOC}
+# )
+#endif()
set_target_properties(CSPavio PROPERTIES
- SOVERSION 1.1.0
- VERSION 1.1.0
+ SOVERSION 1.1.2
+ VERSION 1.1.2
)
INSTALL(TARGETS CSPavio DESTINATION ${LIBCSP_INSTALL_DIR})
endif()
#include "libswresample/swresample.h"
}
#endif
-
// Copy from FFMPEG-3.0.2; doc/example/muxing.c .
#define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */
#include "../osd.h"
#include "agar_logger.h"
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
set(s_qt_common_headers
emu_thread.h
- menu_metaclass.h
mainwidget.h
../osd.h
)
set(QT_COMMON_BASE
qt_utils.cpp
menu_flags.cpp
- menu_metaclass.cpp
emu_thread.cpp
util_fd2.cpp
util_bubble2.cpp
void do_set_mouse_enable(bool flag);
void do_toggle_mouse(void);
void rise_movie_dialog(void);
+ void do_update_inner_fd(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus);
+ void do_update_inner_bubble(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus);
+
signals:
int sig_movie_set_width(int);
int sig_movie_set_height(int);
# endif
for(int ii = 0; ii < drvs; ii++) {
menu_fds[ii]->setEmu(emu);
+ connect(menu_fds[ii], SIGNAL(sig_update_inner_fd(int ,QStringList , class Action_Control **, QStringList , int, bool)),
+ this, SLOT(do_update_inner_fd(int ,QStringList , class Action_Control **, QStringList , int, bool)));
}
#endif
#if defined(USE_TAPE)
# endif
for(int ii = 0; ii < drvs; ii++) {
menu_bubbles[ii]->setEmu(emu);
+ connect(menu_bubbles[ii],
+ SIGNAL(sig_update_inner_bubble(int ,QStringList , class Action_Control **, QStringList , int, bool)),
+ this,
+ SLOT(do_update_inner_bubble(int ,QStringList , class Action_Control **, QStringList , int, bool)));
}
#endif
return 0;
}
+void Ui_MainWindow::do_update_inner_fd(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus)
+{
+#if defined(USE_FD1)
+ if(use_d88_menus) {
+ for(int ii = 0; ii < using_flags->get_max_d88_banks(); ii++) {
+ if(ii < emu->d88_file[drv].bank_num) {
+ base << lst.value(ii);
+ action_select_media_list[ii]->setText(lst.value(ii));
+ action_select_media_list[ii]->setVisible(true);
+ if(ii == num) action_select_media_list[ii]->setChecked(true);
+ } else {
+ if(action_select_media_list[ii] != NULL) {
+ action_select_media_list[ii]->setText(QString::fromUtf8(""));
+ action_select_media_list[ii]->setVisible(false);
+ }
+ }
+ }
+ }
+#endif
+}
+
+void Ui_MainWindow::do_update_inner_bubble(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus)
+{
+#if defined(USE_BUBBLE1)
+ if(use_d88_menus) {
+ for(int ii = 0; ii < using_flags->get_max_b77_banks(); ii++) {
+ if(ii < emu->b77_file[media_drive].bank_num) {
+ base << lst.value(ii);
+ action_select_media_list[ii]->setText(lst.value(ii));
+ action_select_media_list[ii]->setVisible(true);
+ if(ii == num) action_select_media_list[ii]->setChecked(true);
+ } else {
+ if(action_select_media_list[ii] != NULL) {
+ action_select_media_list[ii]->setText(QString::fromUtf8(""));
+ action_select_media_list[ii]->setVisible(false);
+ }
+ }
+ }
+ }
+#endif
+}
+
#ifdef USE_DEBUGGER
#include <../debugger/qt_debugger.h>
)
-#add_library(CSPgui SHARED
-# ${s_qt_gui_srcs}
-# ${s_qt_gui_headers_MOC}
-# )
-#target_link_libraries(CSPgui PUBLIC
+#target_link_libraries(CSPemu_utils PUBLIC
# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPosd/build-win32/qt/osd/CSPosd.dll
# Qt5::Core
# Qt5::Gui
commonclasses.h
sound_dialog.h
mainwidget_base.h
+ menu_metaclass.h
menu_disk.h
menu_cmt.h
menu_cart.h
qt_input.cpp
menu_control.cpp
+ menu_metaclass.cpp
menu_disk.cpp
menu_quickdisk.cpp
menu_compactdisc.cpp
endif()
if(WIN32)
-include (GenerateExportHeader)
-
add_library(qt_gui
${s_qt_gui_srcs}
${s_qt_gui_headers_MOC}
)
-
+#include (GenerateExportHeader)
#add_library(CSPgui SHARED
# ${s_qt_gui_srcs}
# ${s_qt_gui_headers_MOC}
# )
#target_link_libraries(CSPgui PUBLIC
-# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPosd/build-win32/qt/osd/CSPosd.dll
-# Qt5::Core
+# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPemu_utils/build-win32/qt/emuutils/libemu_utils.a
+# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPavio/build-win32/qt/avio/libqt_avio.a
+# ${CMAKE_SOURCE_DIR}/../../build-cmake/libCSPosd/build-win32/qt/osd/libqt_osd.a
+## Qt5::Core
# Qt5::Gui
# Qt5::OpenGL
-# Qt5::Svg
# Qt5::Widgets
+# ${SDL2_LIBRARIES}
# )
#QT5_USE_MODULES(CSPgui Widgets Core Gui OpenGL)
#
#generate_export_header(CSPgui
-# BASE_NAME CSPgui
+# BASE_NAME CSPgui
# EXPORT_MACRO_NAME CSPgui_EXPORT
# EXPORT_FILE_NAME CSPgui_Export.h
# STATIC_DEFINE CSPgui_BUILT_AS_STATIC
)
set_target_properties(CSPgui PROPERTIES
- SOVERSION 1.3.0
- VERSION 1.3.0
+ SOVERSION 1.3.1
+ VERSION 1.3.1
)
INSTALL(TARGETS CSPgui DESTINATION ${LIBCSP_INSTALL_DIR})
endif()
#include <sys/time.h>
#include "simd_types.h"
-
+#ifdef __GNUC__
+ #if defined(Q_OS_WIN) || defined(__WIN32) || defined(__WIN64)
+ #define DLL_PREFIX __declspec(dllexport)
+ #else
+ #define DLL_PREFIX
+ #endif
+#else
+ #define DLL_PREFIX
+#endif
#ifdef __cplusplus
extern "C" {
#endif
- extern void AGAR_OpenLog(int syslog, int cons, const char *devname);
- extern void AGAR_DebugLog(int level, const char *fmt, ...);
- extern void AGAR_CloseLog(void);
- extern void AGAR_SetLogStatus(int sw);
- extern void AGAR_SetLogSysLog(int sw);
- extern void AGAR_SetLogStdOut(int sw);
- extern bool AGAR_LogGetStatus(void);
+ void DLL_PREFIX AGAR_OpenLog(int syslog, int cons, const char *devname);
+ void DLL_PREFIX AGAR_DebugLog(int level, const char *fmt, ...);
+ void DLL_PREFIX AGAR_CloseLog(void);
+ void DLL_PREFIX AGAR_SetLogStatus(int sw);
+ void DLL_PREFIX AGAR_SetLogSysLog(int sw);
+ void DLL_PREFIX AGAR_SetLogStdOut(int sw);
+ bool DLL_PREFIX AGAR_LogGetStatus(void);
#define AGAR_LOG_ON 1
#define AGAR_LOG_OFF 0
extern class EMU* emu;
QT_BEGIN_NAMESPACE
-typedef class Object_Menu_Control: public QObject {
+typedef class DLL_PREFIX Object_Menu_Control: public QObject {
Q_OBJECT
public:
// explicit Object_Menu_Control(QObject *parent = 0);
int sig_stop_saving_movie();
} Object_Menu_Control ;
-typedef class Action_Control: public QAction {
+typedef class DLL_PREFIX Action_Control: public QAction {
Q_OBJECT
protected:
// virtual void addedTo ( QWidget * actionWidget, QWidget * container ){}
#include <QSize>
#include <QWidget>
- QT_BEGIN_NAMESPACE
+#ifdef __GNUC__
+ #if defined(Q_OS_WIN) || defined(__WIN32) || defined(__WIN64)
+ #define DLL_PREFIX __declspec(dllexport)
+ #else
+ #define DLL_PREFIX
+ #endif
+#else
+ #define DLL_PREFIX
+#endif
+
+QT_BEGIN_NAMESPACE
class QHBoxLayout;
class QVBoxLayout;
class QGridLayout;
class MOVIE_SAVER;
-class CSP_DialogMovie: public QWidget {
+class DLL_PREFIX CSP_DialogMovie: public QWidget {
Q_OBJECT;
private:
QSize geometry;
#include <QComboBox>
#include <QList>
#include <QStringList>
+#ifdef __GNUC__
+ #if defined(Q_OS_WIN) || defined(__WIN32) || defined(__WIN64)
+ #define DLL_PREFIX __declspec(dllexport)
+ #else
+ #define DLL_PREFIX
+ #endif
+#else
+ #define DLL_PREFIX
+#endif
QT_BEGIN_NAMESPACE
-class CSP_KeySetupCombo: public QComboBox
+class DLL_PREFIX CSP_KeySetupCombo: public QComboBox
{
Q_OBJECT
protected:
#include <QHBoxLayout>
#include <QGroupBox>
-//#include "emu.h"
+#include "common.h"
QT_BEGIN_NAMESPACE
class EMU;
-class Dlg_AboutCSP : public QWidget
+class DLL_PREFIX Dlg_AboutCSP : public QWidget
{
Q_OBJECT
protected:
#include <QVBoxLayout>
#include <QFont>
-//#include "emu.h"
+#include "common.h"
QT_BEGIN_NAMESPACE
-class Dlg_BrowseText : public QWidget
+class DLL_PREFIX Dlg_BrowseText : public QWidget
{
Q_OBJECT
protected:
#include <QStringList>
#include <QString>
#include <QHBoxLayout>
+#include "common.h"
class CSP_DropDownJSPage;
QT_BEGIN_NAMESPACE
-class CSP_DropDownJoysticks: public QWidget {
+class DLL_PREFIX CSP_DropDownJoysticks: public QWidget {
Q_OBJECT
protected:
QWidget *p_wid;
#include "dropdown_keytables.h"
-class CSP_DropDownJSButton: public QWidget {
+class DLL_PREFIX CSP_DropDownJSButton: public QWidget {
Q_OBJECT;
protected:
QWidget *p_wid;
#include <QLabel>
#include <QStringList>
#include <QString>
+#include "common.h"
#include "dropdown_jsbutton.h"
QT_BEGIN_NAMESPACE
-class CSP_DropDownJSPage: public QWidget {
+class DLL_PREFIX CSP_DropDownJSPage: public QWidget {
Q_OBJECT
protected:
QWidget *p_wid;
};
#define KEYDEF_MAXIMUM 512
-class CSP_KeyTables: public QObject {
+class DLL_PREFIX CSP_KeyTables: public QObject {
Q_OBJECT
protected:
QObject *p_obj;
#include <QThread>
#include <SDL.h>
+#include "common.h"
class EMU;
class OSD;
QT_BEGIN_NAMESPACE
-class JoyThreadClass : public QThread {
+class DLL_PREFIX JoyThreadClass : public QThread {
Q_OBJECT
private:
int joy_num[16];
extern USING_FLAGS *using_flags;
-class Ui_MainWindowBase : public QMainWindow
+class DLL_PREFIX Ui_MainWindowBase : public QMainWindow
{
Q_OBJECT
protected:
QT_BEGIN_NAMESPACE
-class Menu_BinaryClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_BinaryClass: public Menu_MetaClass {
Q_OBJECT
protected:
QActionGroup *action_group_save_recent;
QT_BEGIN_NAMESPACE
-class Menu_BubbleClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_BubbleClass: public Menu_MetaClass {
Q_OBJECT
protected:
//QIcon icon_bubble_casette;
QT_BEGIN_NAMESPACE
-class Menu_CartClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_CartClass: public Menu_MetaClass {
Q_OBJECT
protected:
public:
QT_BEGIN_NAMESPACE
-class Menu_CMTClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_CMTClass: public Menu_MetaClass {
Q_OBJECT
protected:
QString desc_rec;
QT_BEGIN_NAMESPACE
-class Menu_CompactDiscClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_CompactDiscClass: public Menu_MetaClass {
Q_OBJECT
protected:
public:
QT_BEGIN_NAMESPACE
-class Menu_FDClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_FDClass: public Menu_MetaClass {
Q_OBJECT
protected:
class Action_Control *action_ignore_crc_error;
#include <QDir>
-#include "emu.h"
-#include "vm.h"
+//#include "emu.h"
+//#include "vm.h"
#include "qt_dialogs.h"
#include "menu_metaclass.h"
#include "commonclasses.h"
-#include "mainwidget.h"
+#include "mainwidget_base.h"
#include "commonclasses.h"
QString tmps;
int ii;
inner_media_list.clear();
-#if defined(USE_FD1)
- if(use_d88_menus) {
- for(ii = 0; ii < using_flags->get_max_d88_banks(); ii++) {
- if(ii < p_emu->d88_file[media_drive].bank_num) {
- inner_media_list << lst.value(ii);
- action_select_media_list[ii]->setText(lst.value(ii));
- action_select_media_list[ii]->setVisible(true);
- if(ii == num) action_select_media_list[ii]->setChecked(true);
- } else {
- if(action_select_media_list[ii] != NULL) {
- action_select_media_list[ii]->setText(QString::fromUtf8(""));
- action_select_media_list[ii]->setVisible(false);
- }
- }
- }
- }
-#endif
+ emit sig_update_inner_fd(media_drive, inner_media_list, action_select_media_list, lst , num, use_d88_menus);
}
void Menu_MetaClass::do_update_inner_media_bubble(QStringList lst, int num)
QString tmps;
int ii;
inner_media_list.clear();
-#if defined(USE_BUBBLE1)
- if(use_d88_menus) {
- for(ii = 0; ii < using_flags->get_max_b77_banks(); ii++) {
- if(ii < p_emu->b77_file[media_drive].bank_num) {
- inner_media_list << lst.value(ii);
- action_select_media_list[ii]->setText(lst.value(ii));
- action_select_media_list[ii]->setVisible(true);
- if(ii == num) action_select_media_list[ii]->setChecked(true);
- } else {
- if(action_select_media_list[ii] != NULL) {
- action_select_media_list[ii]->setText(QString::fromUtf8(""));
- action_select_media_list[ii]->setVisible(false);
- }
- }
- }
- }
-#endif
+ emit sig_update_inner_bubble(media_drive, inner_media_list, action_select_media_list,
+ lst, num, use_d88_menus);
}
void Menu_MetaClass::create_pulldown_menu_sub(void)
QT_BEGIN_NAMESPACE
extern USING_FLAGS *using_flags;
-class Menu_MetaClass : public QMenu {
+
+class DLL_PREFIX Menu_MetaClass : public QMenu {
Q_OBJECT
private:
int sig_set_recent_media(int, int);
int sig_set_inner_slot(int, int);
int sig_insert_media(int);
+ int sig_update_inner_fd(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus);
+ int sig_update_inner_bubble(int drv, QStringList base, class Action_Control **action_select_media_list,
+ QStringList lst, int num, bool use_d88_menus);
+
};
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
-class Menu_QDClass: public Menu_MetaClass {
+class DLL_PREFIX Menu_QDClass: public Menu_MetaClass {
Q_OBJECT
protected:
public:
//#include "emu.h"
#include "qt_main.h"
-typedef class CSP_DiskParams : public QObject
+typedef class DLL_PREFIX CSP_DiskParams : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(CSP_DiskParams)
uint32_t key;
};
-class GLDrawClass: public QGLWidget
+class DLL_PREFIX GLDrawClass: public QGLWidget
{
Q_OBJECT
private:
class QOpenGLFramebufferObject;
class QOpenGLFramebufferObjectFormat;
-class GLDraw_2_0 : public QObject
+class DLL_PREFIX GLDraw_2_0 : public QObject
{
Q_OBJECT
protected:
#include "qt_glutil_gl2_0.h"
#include <QOpenGLFunctions_3_0>
-class GLDraw_3_0 : public GLDraw_2_0
+class DLL_PREFIX GLDraw_3_0 : public GLDraw_2_0
{
Q_OBJECT
protected:
extern class META_MainWindow *rMainWindow;
extern EMU* emu;
// menu
-extern std::string cpp_homedir;
-extern std::string cpp_confdir;
-extern std::string my_procname;
-extern std::string sRssDir;
-extern bool now_menuloop;
+extern std::string DLL_PREFIX cpp_homedir;
+extern std::string DLL_PREFIX cpp_confdir;
+extern std::string DLL_PREFIX my_procname;
+extern std::string DLL_PREFIX sRssDir;
+extern bool DLL_PREFIX now_menuloop;
-extern const int screen_mode_width[];
-extern const int screen_mode_height[];
+extern const int DLL_PREFIX screen_mode_width[];
+extern const int DLL_PREFIX screen_mode_height[];
#ifndef MAX_HISTORY
#define MAX_HISTORY 8
}
#endif
-extern _TCHAR* get_parent_dir(_TCHAR* file);
-extern void Convert_CP932_to_UTF8(char *dst, char *src, int n_limit, int i_limit);
-extern void get_long_full_path_name(_TCHAR* src, _TCHAR* dst);
-extern void get_short_filename(_TCHAR *dst, _TCHAR *file, int maxlen);
+extern _TCHAR* DLL_PREFIX get_parent_dir(_TCHAR* file);
+extern void DLL_PREFIX Convert_CP932_to_UTF8(char *dst, char *src, int n_limit, int i_limit);
+extern void DLL_PREFIX get_long_full_path_name(_TCHAR* src, _TCHAR* dst);
+extern void DLL_PREFIX get_short_filename(_TCHAR *dst, _TCHAR *file, int maxlen);
// Important Flags
//extern AGAR_CPUID *pCpuID;
//
-class Ui_SndSliderObject : public QSlider
+class DLL_PREFIX Ui_SndSliderObject : public QSlider
{
Q_OBJECT
private:
class USING_FLAGS;
QT_BEGIN_NAMESPACE
-class OSD_BASE : public QThread
+class DLL_PREFIX OSD_BASE : public QThread
{
Q_OBJECT
protected: