mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-08-02 13:58:37 +00:00
refactor: QtScrcpyCore static lib
This commit is contained in:
parent
8cefc7c24e
commit
15bff4f250
12 changed files with 268 additions and 214 deletions
|
@ -29,7 +29,7 @@ endif()
|
||||||
message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}")
|
message(STATUS "[${PROJECT_NAME}] CPU_ARCH:${QC_CPU_ARCH}")
|
||||||
|
|
||||||
# CMake set
|
# CMake set
|
||||||
#set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
@ -92,84 +92,6 @@ message(STATUS "[${PROJECT_NAME}] Qt version is: ${QT_VERSION_MAJOR}.${QT_VERSIO
|
||||||
# Sources
|
# Sources
|
||||||
#
|
#
|
||||||
|
|
||||||
# adb
|
|
||||||
set(QC_ADB_SOURCES
|
|
||||||
QtScrcpyCore/src/adb/adbprocessimpl.h
|
|
||||||
QtScrcpyCore/src/adb/adbprocessimpl.cpp
|
|
||||||
QtScrcpyCore/src/adb/adbprocess.cpp
|
|
||||||
)
|
|
||||||
source_group(QtScrcpyCore/src/adb FILES ${QC_ADB_SOURCES})
|
|
||||||
|
|
||||||
# common
|
|
||||||
set(QC_COMMON_SOURCES
|
|
||||||
QtScrcpyCore/src/common/qscrcpyevent.h
|
|
||||||
)
|
|
||||||
source_group(QtScrcpyCore/src/common FILES ${QC_COMMON_SOURCES})
|
|
||||||
|
|
||||||
# include
|
|
||||||
set(QC_INCLUDE_SOURCES
|
|
||||||
QtScrcpyCore/include/QtScrcpyCore.h
|
|
||||||
QtScrcpyCore/include/QtScrcpyCoreDef.h
|
|
||||||
QtScrcpyCore/include/adbprocess.h
|
|
||||||
)
|
|
||||||
source_group(QtScrcpyCore/include FILES ${QC_INCLUDE_SOURCES})
|
|
||||||
|
|
||||||
# device
|
|
||||||
set(QC_DEVICE_SOURCES
|
|
||||||
QtScrcpyCore/src/device/device.h
|
|
||||||
QtScrcpyCore/src/device/device.cpp
|
|
||||||
QtScrcpyCore/src/device/android/input.h
|
|
||||||
QtScrcpyCore/src/device/android/keycodes.h
|
|
||||||
QtScrcpyCore/src/device/controller/controller.h
|
|
||||||
QtScrcpyCore/src/device/controller/controller.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/bufferutil.h
|
|
||||||
QtScrcpyCore/src/device/controller/bufferutil.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertbase.h
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertbase.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertnormal.h
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertnormal.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertgame.h
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/inputconvertgame.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/controlmsg.h
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/controlmsg.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/keymap/keymap.h
|
|
||||||
QtScrcpyCore/src/device/controller/inputconvert/keymap/keymap.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/receiver/devicemsg.h
|
|
||||||
QtScrcpyCore/src/device/controller/receiver/devicemsg.cpp
|
|
||||||
QtScrcpyCore/src/device/controller/receiver/receiver.h
|
|
||||||
QtScrcpyCore/src/device/controller/receiver/receiver.cpp
|
|
||||||
QtScrcpyCore/src/device/decoder/avframeconvert.h
|
|
||||||
QtScrcpyCore/src/device/decoder/avframeconvert.cpp
|
|
||||||
QtScrcpyCore/src/device/decoder/decoder.h
|
|
||||||
QtScrcpyCore/src/device/decoder/decoder.cpp
|
|
||||||
QtScrcpyCore/src/device/decoder/fpscounter.h
|
|
||||||
QtScrcpyCore/src/device/decoder/fpscounter.cpp
|
|
||||||
QtScrcpyCore/src/device/decoder/videobuffer.h
|
|
||||||
QtScrcpyCore/src/device/decoder/videobuffer.cpp
|
|
||||||
QtScrcpyCore/src/device/filehandler/filehandler.h
|
|
||||||
QtScrcpyCore/src/device/filehandler/filehandler.cpp
|
|
||||||
QtScrcpyCore/src/device/recorder/recorder.h
|
|
||||||
QtScrcpyCore/src/device/recorder/recorder.cpp
|
|
||||||
QtScrcpyCore/src/device/render/qyuvopenglwidget.h
|
|
||||||
QtScrcpyCore/src/device/render/qyuvopenglwidget.cpp
|
|
||||||
QtScrcpyCore/src/device/server/server.h
|
|
||||||
QtScrcpyCore/src/device/server/server.cpp
|
|
||||||
QtScrcpyCore/src/device/server/tcpserver.h
|
|
||||||
QtScrcpyCore/src/device/server/tcpserver.cpp
|
|
||||||
QtScrcpyCore/src/device/server/videosocket.h
|
|
||||||
QtScrcpyCore/src/device/server/videosocket.cpp
|
|
||||||
QtScrcpyCore/src/device/stream/stream.h
|
|
||||||
QtScrcpyCore/src/device/stream/stream.cpp
|
|
||||||
)
|
|
||||||
source_group(QtScrcpyCore/src/device FILES ${QC_DEVICE_SOURCES})
|
|
||||||
|
|
||||||
# devicemanage
|
|
||||||
set(QC_DEVICEMANAGE_SOURCES
|
|
||||||
QtScrcpyCore/src/devicemanage/devicemanage.h
|
|
||||||
QtScrcpyCore/src/devicemanage/devicemanage.cpp
|
|
||||||
)
|
|
||||||
source_group(QtScrcpyCore/src/devicemanage FILES ${QC_DEVICEMANAGE_SOURCES})
|
|
||||||
|
|
||||||
# fontawesome
|
# fontawesome
|
||||||
set(QC_FONTAWESOME_SOURCES
|
set(QC_FONTAWESOME_SOURCES
|
||||||
fontawesome/iconhelper.h
|
fontawesome/iconhelper.h
|
||||||
|
@ -197,12 +119,13 @@ set(QC_UI_SOURCES
|
||||||
ui/dialog.cpp
|
ui/dialog.cpp
|
||||||
ui/dialog.h
|
ui/dialog.h
|
||||||
ui/dialog.ui
|
ui/dialog.ui
|
||||||
|
render/qyuvopenglwidget.h
|
||||||
|
render/qyuvopenglwidget.cpp
|
||||||
)
|
)
|
||||||
source_group(ui FILES ${QC_UI_SOURCES})
|
source_group(ui FILES ${QC_UI_SOURCES})
|
||||||
|
|
||||||
# util
|
# util
|
||||||
set(QC_UTIL_SOURCES
|
set(QC_UTIL_SOURCES
|
||||||
util/compat.h
|
|
||||||
util/config.h
|
util/config.h
|
||||||
util/config.cpp
|
util/config.cpp
|
||||||
util/mousetap/mousetap.h
|
util/mousetap/mousetap.h
|
||||||
|
@ -268,11 +191,6 @@ qt5_add_translation(QC_QM_FILES ${QC_TS_FILES})
|
||||||
|
|
||||||
# all sources
|
# all sources
|
||||||
set(QC_PROJECT_SOURCES
|
set(QC_PROJECT_SOURCES
|
||||||
${QC_INCLUDE_SOURCES}
|
|
||||||
${QC_ADB_SOURCES}
|
|
||||||
${QC_COMMON_SOURCES}
|
|
||||||
${QC_DEVICE_SOURCES}
|
|
||||||
${QC_DEVICEMANAGE_SOURCES}
|
|
||||||
${QC_FONTAWESOME_SOURCES}
|
${QC_FONTAWESOME_SOURCES}
|
||||||
${QC_UIBASE_SOURCES}
|
${QC_UIBASE_SOURCES}
|
||||||
${QC_UI_SOURCES}
|
${QC_UI_SOURCES}
|
||||||
|
@ -295,37 +213,11 @@ add_executable(${PROJECT_NAME} ${QC_RUNTIME_TYPE} ${QC_PROJECT_SOURCES})
|
||||||
# Internal include path (todo: remove this, use absolute path include)
|
# Internal include path (todo: remove this, use absolute path include)
|
||||||
#
|
#
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/include)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/adb)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/common)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/filehandler)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/android)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/decoder)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/receiver)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/inputconvert)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/controller/inputconvert/keymap)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/server)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/stream)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/render)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/ui)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/device/recorder)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE QtScrcpyCore/src/devicemanage)
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE fontawesome)
|
target_include_directories(${PROJECT_NAME} PRIVATE fontawesome)
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE util)
|
target_include_directories(${PROJECT_NAME} PRIVATE util)
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE uibase)
|
target_include_directories(${PROJECT_NAME} PRIVATE uibase)
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE ui)
|
target_include_directories(${PROJECT_NAME} PRIVATE ui)
|
||||||
|
target_include_directories(${PROJECT_NAME} PRIVATE render)
|
||||||
#
|
|
||||||
# common deps
|
|
||||||
#
|
|
||||||
|
|
||||||
# Qt
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
||||||
Qt${QT_VERSION_MAJOR}::Widgets
|
|
||||||
Qt${QT_VERSION_MAJOR}::Network
|
|
||||||
)
|
|
||||||
|
|
||||||
# output dir
|
# output dir
|
||||||
# https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
|
# https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
|
||||||
|
@ -346,58 +238,19 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
|
||||||
# windows
|
# windows
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
# ffmpeg
|
get_target_property(QSC_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
||||||
# include
|
set(QSC_DEPLOY_PATH ${QSC_BIN_OUTPUT_PATH})
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
|
||||||
# link
|
|
||||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/${QC_CPU_ARCH}")
|
|
||||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
||||||
avformat
|
|
||||||
avcodec
|
|
||||||
avutil
|
|
||||||
swscale
|
|
||||||
)
|
|
||||||
# copy
|
|
||||||
set(FFMPEG_BIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/bin/${QC_CPU_ARCH}")
|
|
||||||
get_target_property(FFMPEG_BIN_OUTPUT_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
|
||||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avcodec-58.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avformat-58.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avutil-56.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swscale-5.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swresample-3.dll" "${FFMPEG_BIN_OUTPUT_PATH}"
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# MacOS
|
# MacOS
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
# ffmpeg
|
|
||||||
# include
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
|
||||||
# link
|
|
||||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib")
|
|
||||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
||||||
avformat.58
|
|
||||||
avcodec.58
|
|
||||||
avutil.56
|
|
||||||
swscale.5
|
|
||||||
)
|
|
||||||
|
|
||||||
# copy bundle file
|
# copy bundle file
|
||||||
get_target_property(MACOS_BUNDLE_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
get_target_property(MACOS_BUNDLE_PATH ${PROJECT_NAME} RUNTIME_OUTPUT_DIRECTORY)
|
||||||
set(MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH}/${PROJECT_NAME}.app/Contents)
|
set(MACOS_BUNDLE_PATH ${MACOS_BUNDLE_PATH}/${QSC_PROJECT_NAME}.app/Contents)
|
||||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
||||||
# dylib,scrcpy-server,adb copy to Contents/MacOS
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavcodec.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavformat.58.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libavutil.56.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libswscale.5.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib/libswresample.3.dylib" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/scrcpy-server" "${MACOS_BUNDLE_PATH}/MacOS"
|
set(QSC_DEPLOY_PATH ${MACOS_BUNDLE_PATH})
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/adb/mac/adb" "${MACOS_BUNDLE_PATH}/MacOS"
|
|
||||||
|
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||||
# config file copy to Contents/MacOS/config
|
# config file copy to Contents/MacOS/config
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../config/config.ini" "${MACOS_BUNDLE_PATH}/MacOS/config"
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/../config/config.ini" "${MACOS_BUNDLE_PATH}/MacOS/config"
|
||||||
)
|
)
|
||||||
|
@ -426,27 +279,19 @@ endif()
|
||||||
|
|
||||||
# Linux
|
# Linux
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(QSC_DEPLOY_PATH "")
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
|
|
||||||
# include
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE ../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/include)
|
|
||||||
# link
|
|
||||||
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg/lib")
|
|
||||||
target_link_directories(${PROJECT_NAME} PRIVATE ${FFMPEG_LIB_PATH})
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
||||||
# ffmpeg
|
|
||||||
avformat
|
|
||||||
avcodec
|
|
||||||
avutil
|
|
||||||
swscale
|
|
||||||
# qx11
|
|
||||||
Qt${QT_VERSION_MAJOR}::X11Extras
|
|
||||||
# xcb https://doc.qt.io/qt-5/linux-requirements.html
|
|
||||||
xcb
|
|
||||||
# pthread
|
|
||||||
Threads::Threads
|
|
||||||
)
|
|
||||||
|
|
||||||
# linux set app icon: https://blog.csdn.net/MrNoboday/article/details/82870853
|
# linux set app icon: https://blog.csdn.net/MrNoboday/article/details/82870853
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#
|
||||||
|
# common deps
|
||||||
|
#
|
||||||
|
|
||||||
|
add_subdirectory(QtScrcpyCore)
|
||||||
|
|
||||||
|
# Qt
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
|
Qt${QT_VERSION_MAJOR}::Widgets
|
||||||
|
Qt${QT_VERSION_MAJOR}::Network
|
||||||
|
QtScrcpyCore
|
||||||
|
)
|
||||||
|
|
219
QtScrcpy/QtScrcpyCore/CMakeLists.txt
Normal file
219
QtScrcpy/QtScrcpyCore/CMakeLists.txt
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
set(QSC_PROJECT_NAME "QtScrcpyCore")
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED)
|
||||||
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED)
|
||||||
|
|
||||||
|
# check arch
|
||||||
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
set(QSC_CPU_ARCH x64)
|
||||||
|
else()
|
||||||
|
set(QSC_CPU_ARCH x86)
|
||||||
|
endif()
|
||||||
|
message(STATUS "[${PROJECT_NAME}] QSC_CPU_ARCH:${QSC_CPU_ARCH}")
|
||||||
|
|
||||||
|
if(NOT DEFINED QSC_DEPLOY_PATH)
|
||||||
|
message(FATAL_ERROR "QtScrcpyCore need QSC_DEPLOY_PATH")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sources
|
||||||
|
#
|
||||||
|
|
||||||
|
# adb
|
||||||
|
set(QSC_ADB_SOURCES
|
||||||
|
src/adb/adbprocessimpl.h
|
||||||
|
src/adb/adbprocessimpl.cpp
|
||||||
|
src/adb/adbprocess.cpp
|
||||||
|
)
|
||||||
|
source_group(src/adb FILES ${QSC_ADB_SOURCES})
|
||||||
|
|
||||||
|
# common
|
||||||
|
set(QSC_COMMON_SOURCES
|
||||||
|
src/common/qscrcpyevent.h
|
||||||
|
)
|
||||||
|
source_group(src/common FILES ${QSC_COMMON_SOURCES})
|
||||||
|
|
||||||
|
# include
|
||||||
|
set(QSC_INCLUDE_SOURCES
|
||||||
|
include/QtScrcpyCore.h
|
||||||
|
include/QtScrcpyCoreDef.h
|
||||||
|
include/adbprocess.h
|
||||||
|
)
|
||||||
|
source_group(include FILES ${QSC_INCLUDE_SOURCES})
|
||||||
|
|
||||||
|
# device
|
||||||
|
set(QSC_DEVICE_SOURCES
|
||||||
|
src/device/device.h
|
||||||
|
src/device/device.cpp
|
||||||
|
src/device/compat.h
|
||||||
|
src/device/android/input.h
|
||||||
|
src/device/android/keycodes.h
|
||||||
|
src/device/controller/controller.h
|
||||||
|
src/device/controller/controller.cpp
|
||||||
|
src/device/controller/bufferutil.h
|
||||||
|
src/device/controller/bufferutil.cpp
|
||||||
|
src/device/controller/inputconvert/inputconvertbase.h
|
||||||
|
src/device/controller/inputconvert/inputconvertbase.cpp
|
||||||
|
src/device/controller/inputconvert/inputconvertnormal.h
|
||||||
|
src/device/controller/inputconvert/inputconvertnormal.cpp
|
||||||
|
src/device/controller/inputconvert/inputconvertgame.h
|
||||||
|
src/device/controller/inputconvert/inputconvertgame.cpp
|
||||||
|
src/device/controller/inputconvert/controlmsg.h
|
||||||
|
src/device/controller/inputconvert/controlmsg.cpp
|
||||||
|
src/device/controller/inputconvert/keymap/keymap.h
|
||||||
|
src/device/controller/inputconvert/keymap/keymap.cpp
|
||||||
|
src/device/controller/receiver/devicemsg.h
|
||||||
|
src/device/controller/receiver/devicemsg.cpp
|
||||||
|
src/device/controller/receiver/receiver.h
|
||||||
|
src/device/controller/receiver/receiver.cpp
|
||||||
|
src/device/decoder/avframeconvert.h
|
||||||
|
src/device/decoder/avframeconvert.cpp
|
||||||
|
src/device/decoder/decoder.h
|
||||||
|
src/device/decoder/decoder.cpp
|
||||||
|
src/device/decoder/fpscounter.h
|
||||||
|
src/device/decoder/fpscounter.cpp
|
||||||
|
src/device/decoder/videobuffer.h
|
||||||
|
src/device/decoder/videobuffer.cpp
|
||||||
|
src/device/filehandler/filehandler.h
|
||||||
|
src/device/filehandler/filehandler.cpp
|
||||||
|
src/device/recorder/recorder.h
|
||||||
|
src/device/recorder/recorder.cpp
|
||||||
|
src/device/server/server.h
|
||||||
|
src/device/server/server.cpp
|
||||||
|
src/device/server/tcpserver.h
|
||||||
|
src/device/server/tcpserver.cpp
|
||||||
|
src/device/server/videosocket.h
|
||||||
|
src/device/server/videosocket.cpp
|
||||||
|
src/device/stream/stream.h
|
||||||
|
src/device/stream/stream.cpp
|
||||||
|
)
|
||||||
|
source_group(src/device FILES ${QSC_DEVICE_SOURCES})
|
||||||
|
|
||||||
|
# devicemanage
|
||||||
|
set(QSC_DEVICEMANAGE_SOURCES
|
||||||
|
src/devicemanage/devicemanage.h
|
||||||
|
src/devicemanage/devicemanage.cpp
|
||||||
|
)
|
||||||
|
source_group(src/devicemanage FILES ${QSC_DEVICEMANAGE_SOURCES})
|
||||||
|
|
||||||
|
add_library(QtScrcpyCore STATIC
|
||||||
|
${QSC_ADB_SOURCES}
|
||||||
|
${QSC_COMMON_SOURCES}
|
||||||
|
${QSC_INCLUDE_SOURCES}
|
||||||
|
${QSC_DEVICE_SOURCES}
|
||||||
|
${QSC_DEVICEMANAGE_SOURCES}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(QtScrcpyCore PRIVATE
|
||||||
|
Qt${QT_VERSION_MAJOR}::Widgets
|
||||||
|
Qt${QT_VERSION_MAJOR}::Network
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/adb)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/common)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/filehandler)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/android)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/decoder)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/receiver)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/inputconvert)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/controller/inputconvert/keymap)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/server)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/stream)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/ui)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/device/recorder)
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/devicemanage)
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# plantform deps
|
||||||
|
#
|
||||||
|
|
||||||
|
# windows
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
# ffmpeg
|
||||||
|
# include
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||||
|
# link
|
||||||
|
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/${QSC_CPU_ARCH}")
|
||||||
|
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||||
|
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||||
|
avformat
|
||||||
|
avcodec
|
||||||
|
avutil
|
||||||
|
swscale
|
||||||
|
)
|
||||||
|
# copy
|
||||||
|
set(FFMPEG_BIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/bin/${QSC_CPU_ARCH}")
|
||||||
|
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avcodec-58.dll" "${QSC_DEPLOY_PATH}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avformat-58.dll" "${QSC_DEPLOY_PATH}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/avutil-56.dll" "${QSC_DEPLOY_PATH}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swscale-5.dll" "${QSC_DEPLOY_PATH}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FFMPEG_BIN_PATH}/swresample-3.dll" "${QSC_DEPLOY_PATH}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# MacOS
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
# ffmpeg
|
||||||
|
# include
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||||
|
# link
|
||||||
|
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib")
|
||||||
|
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||||
|
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||||
|
avformat.58
|
||||||
|
avcodec.58
|
||||||
|
avutil.56
|
||||||
|
swscale.5
|
||||||
|
)
|
||||||
|
|
||||||
|
# copy bundle file
|
||||||
|
add_custom_command(TARGET ${QSC_PROJECT_NAME} POST_BUILD
|
||||||
|
# dylib,scrcpy-server,adb copy to Contents/MacOS
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavcodec.58.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavformat.58.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libavutil.56.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libswscale.5.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib/libswresample.3.dylib" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/scrcpy-server" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/adb/mac/adb" "${QSC_DEPLOY_PATH}/MacOS"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
|
# include
|
||||||
|
target_include_directories(${QSC_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/include)
|
||||||
|
# link
|
||||||
|
set(FFMPEG_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/ffmpeg/lib")
|
||||||
|
target_link_directories(${QSC_PROJECT_NAME} PUBLIC ${FFMPEG_LIB_PATH})
|
||||||
|
target_link_libraries(${QSC_PROJECT_NAME} PRIVATE
|
||||||
|
# ffmpeg
|
||||||
|
avformat
|
||||||
|
avcodec
|
||||||
|
avutil
|
||||||
|
swscale
|
||||||
|
# qx11
|
||||||
|
Qt${QT_VERSION_MAJOR}::X11Extras
|
||||||
|
# xcb https://doc.qt.io/qt-5/linux-requirements.html
|
||||||
|
xcb
|
||||||
|
# pthread
|
||||||
|
Threads::Threads
|
||||||
|
)
|
||||||
|
|
||||||
|
endif()
|
|
@ -8,24 +8,10 @@
|
||||||
|
|
||||||
#include "keymap.h"
|
#include "keymap.h"
|
||||||
|
|
||||||
QString KeyMap::s_keyMapPath = "";
|
|
||||||
|
|
||||||
KeyMap::KeyMap(QObject *parent) : QObject(parent) {}
|
KeyMap::KeyMap(QObject *parent) : QObject(parent) {}
|
||||||
|
|
||||||
KeyMap::~KeyMap() {}
|
KeyMap::~KeyMap() {}
|
||||||
|
|
||||||
const QString &KeyMap::getKeyMapPath()
|
|
||||||
{
|
|
||||||
if (s_keyMapPath.isEmpty()) {
|
|
||||||
s_keyMapPath = QString::fromLocal8Bit(qgetenv("QTSCRCPY_KEYMAP_PATH"));
|
|
||||||
QFileInfo fileInfo(s_keyMapPath);
|
|
||||||
if (s_keyMapPath.isEmpty() || !fileInfo.isDir()) {
|
|
||||||
s_keyMapPath = QCoreApplication::applicationDirPath() + "/keymap";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return s_keyMapPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KeyMap::loadKeyMap(const QString &json)
|
void KeyMap::loadKeyMap(const QString &json)
|
||||||
{
|
{
|
||||||
QString errorString;
|
QString errorString;
|
||||||
|
|
|
@ -117,8 +117,6 @@ public:
|
||||||
bool isValidSteerWheelMap();
|
bool isValidSteerWheelMap();
|
||||||
const KeyMap::KeyMapNode &getMouseMoveMap();
|
const KeyMap::KeyMapNode &getMouseMoveMap();
|
||||||
|
|
||||||
static const QString &getKeyMapPath();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// set up the reverse map from key/event event to keyMapNode
|
// set up the reverse map from key/event event to keyMapNode
|
||||||
void makeReverseMap();
|
void makeReverseMap();
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
#include "recorder.h"
|
#include "recorder.h"
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "stream.h"
|
#include "stream.h"
|
||||||
#include "videoform.h"
|
|
||||||
|
|
||||||
namespace qsc {
|
namespace qsc {
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
#include "devicemanage.h"
|
#include "devicemanage.h"
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "videoform.h"
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace qsc {
|
namespace qsc {
|
||||||
|
|
||||||
|
@ -17,9 +17,13 @@ IDeviceManage& IDeviceManage::getInstance() {
|
||||||
return dm;
|
return dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceManage::DeviceManage() {}
|
DeviceManage::DeviceManage() {
|
||||||
|
Stream::init();
|
||||||
|
}
|
||||||
|
|
||||||
DeviceManage::~DeviceManage() {}
|
DeviceManage::~DeviceManage() {
|
||||||
|
Stream::deInit();
|
||||||
|
}
|
||||||
|
|
||||||
QPointer<IDevice> DeviceManage::getDevice(const QString &serial)
|
QPointer<IDevice> DeviceManage::getDevice(const QString &serial)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
#include "mousetap/mousetap.h"
|
#include "mousetap/mousetap.h"
|
||||||
#include "stream.h"
|
|
||||||
|
|
||||||
static Dialog *g_mainDlg = Q_NULLPTR;
|
static Dialog *g_mainDlg = Q_NULLPTR;
|
||||||
static QtMessageHandler g_oldMessageHandler = Q_NULLPTR;
|
static QtMessageHandler g_oldMessageHandler = Q_NULLPTR;
|
||||||
|
@ -73,7 +72,6 @@ int main(int argc, char *argv[])
|
||||||
QSurfaceFormat::setDefaultFormat(varFormat);
|
QSurfaceFormat::setDefaultFormat(varFormat);
|
||||||
|
|
||||||
g_oldMessageHandler = qInstallMessageHandler(myMessageOutput);
|
g_oldMessageHandler = qInstallMessageHandler(myMessageOutput);
|
||||||
Stream::init();
|
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
|
||||||
// windows下通过qmake VERSION变量或者rc设置版本号和应用名称后,这里可以直接拿到
|
// windows下通过qmake VERSION变量或者rc设置版本号和应用名称后,这里可以直接拿到
|
||||||
|
@ -118,8 +116,6 @@ int main(int argc, char *argv[])
|
||||||
#if defined(Q_OS_WIN32) || defined(Q_OS_OSX)
|
#if defined(Q_OS_WIN32) || defined(Q_OS_OSX)
|
||||||
MouseTap::getInstance()->quitMouseEventTap();
|
MouseTap::getInstance()->quitMouseEventTap();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Stream::deInit();
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,24 @@
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "device.h"
|
|
||||||
#include "dialog.h"
|
#include "dialog.h"
|
||||||
#include "keymap.h"
|
|
||||||
#include "ui_dialog.h"
|
#include "ui_dialog.h"
|
||||||
#include "videoform.h"
|
#include "videoform.h"
|
||||||
|
|
||||||
|
QString s_keyMapPath = "";
|
||||||
|
|
||||||
|
const QString &getKeyMapPath()
|
||||||
|
{
|
||||||
|
if (s_keyMapPath.isEmpty()) {
|
||||||
|
s_keyMapPath = QString::fromLocal8Bit(qgetenv("QTSCRCPY_KEYMAP_PATH"));
|
||||||
|
QFileInfo fileInfo(s_keyMapPath);
|
||||||
|
if (s_keyMapPath.isEmpty() || !fileInfo.isDir()) {
|
||||||
|
s_keyMapPath = QCoreApplication::applicationDirPath() + "/keymap";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s_keyMapPath;
|
||||||
|
}
|
||||||
|
|
||||||
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog)
|
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
@ -214,7 +226,7 @@ void Dialog::delayMs(int ms)
|
||||||
|
|
||||||
QString Dialog::getGameScript(const QString &fileName)
|
QString Dialog::getGameScript(const QString &fileName)
|
||||||
{
|
{
|
||||||
QFile loadFile(KeyMap::getKeyMapPath() + "/" + fileName);
|
QFile loadFile(getKeyMapPath() + "/" + fileName);
|
||||||
if (!loadFile.open(QIODevice::ReadOnly)) {
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
||||||
outLog("open file failed:" + fileName, true);
|
outLog("open file failed:" + fileName, true);
|
||||||
return "";
|
return "";
|
||||||
|
@ -410,6 +422,7 @@ void Dialog::getIPbyIp()
|
||||||
|
|
||||||
void Dialog::onDeviceConnected(bool success, const QString &serial, const QString &deviceName, const QSize &size)
|
void Dialog::onDeviceConnected(bool success, const QString &serial, const QString &deviceName, const QSize &size)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(deviceName);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -506,7 +519,7 @@ void Dialog::on_stopAllServerBtn_clicked()
|
||||||
void Dialog::on_refreshGameScriptBtn_clicked()
|
void Dialog::on_refreshGameScriptBtn_clicked()
|
||||||
{
|
{
|
||||||
ui->gameBox->clear();
|
ui->gameBox->clear();
|
||||||
QDir dir(KeyMap::getKeyMapPath());
|
QDir dir(getKeyMapPath());
|
||||||
if (!dir.exists()) {
|
if (!dir.exists()) {
|
||||||
outLog("keymap directory not find", true);
|
outLog("keymap directory not find", true);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -14,17 +14,12 @@
|
||||||
#include <QtWidgets/QHBoxLayout>
|
#include <QtWidgets/QHBoxLayout>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "controller.h"
|
|
||||||
#include "iconhelper.h"
|
#include "iconhelper.h"
|
||||||
#include "qyuvopenglwidget.h"
|
#include "qyuvopenglwidget.h"
|
||||||
#include "toolform.h"
|
#include "toolform.h"
|
||||||
#include "mousetap/mousetap.h"
|
#include "mousetap/mousetap.h"
|
||||||
#include "ui_videoform.h"
|
#include "ui_videoform.h"
|
||||||
#include "videoform.h"
|
#include "videoform.h"
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#include "libavutil/frame.h"
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoForm::VideoForm(bool framelessWindow, bool skin, QWidget *parent) : QWidget(parent), ui(new Ui::videoForm), m_skin(skin)
|
VideoForm::VideoForm(bool framelessWindow, bool skin, QWidget *parent) : QWidget(parent), ui(new Ui::videoForm), m_skin(skin)
|
||||||
{
|
{
|
||||||
|
@ -287,7 +282,6 @@ void VideoForm::installShortcut()
|
||||||
emit device->postPower();
|
emit device->postPower();
|
||||||
});
|
});
|
||||||
|
|
||||||
// setScreenPowerMode(ControlMsg::SPM_OFF)
|
|
||||||
shortcut = new QShortcut(QKeySequence("Ctrl+o"), this);
|
shortcut = new QShortcut(QKeySequence("Ctrl+o"), this);
|
||||||
shortcut->setAutoRepeat(false);
|
shortcut->setAutoRepeat(false);
|
||||||
connect(shortcut, &QShortcut::activated, this, [this]() {
|
connect(shortcut, &QShortcut::activated, this, [this]() {
|
||||||
|
@ -295,7 +289,7 @@ void VideoForm::installShortcut()
|
||||||
if (!device) {
|
if (!device) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
emit device->setScreenPowerMode(ControlMsg::SPM_OFF);
|
emit device->setScreenPowerMode(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
// expandNotificationPanel
|
// expandNotificationPanel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue