From 90f5a33ea073d96563159c70331e3d7e022536e1 Mon Sep 17 00:00:00 2001 From: kreijstal Date: Wed, 13 Dec 2023 00:45:59 +0100 Subject: [PATCH 01/12] force_compile_mingw --- src/apps/win/AccessRightsDialog.cpp | 8 +++-- src/apps/win/EditUserDialog.hpp | 1 + src/apps/win/cam2web.rc | Bin 25964 -> 12627 bytes .../cameras/DirectShow/XLocalVideoDevice.cpp | 30 +++++++++--------- .../cameras/DirectShow/XLocalVideoDevice.hpp | 4 +-- .../DirectShow/XLocalVideoDeviceConfig.cpp | 14 ++++---- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/apps/win/AccessRightsDialog.cpp b/src/apps/win/AccessRightsDialog.cpp index 00ec41f..4584b48 100644 --- a/src/apps/win/AccessRightsDialog.cpp +++ b/src/apps/win/AccessRightsDialog.cpp @@ -132,8 +132,10 @@ static void AddUserToListView( HWND hwndListView, const string& userName, UserGr lvI.iItem = ListView_GetItemCount( hwndListView ); ListView_InsertItem( hwndListView, &lvI ); + wchar_t adminText[] = L"Admin"; + wchar_t userText[] = L"User"; + lvI.pszText = (userGroup == UserGroup::Admin) ? adminText : userText; - lvI.pszText = ( userGroup == UserGroup::Admin ) ? L"Admin" : L"User"; lvI.mask = LVIF_TEXT; lvI.iSubItem = 1; @@ -171,7 +173,9 @@ static void UpdateUserInListView( HWND hwndListView, const string& userName, Use lvI.mask = LVIF_TEXT; lvI.iItem = i; lvI.iSubItem = 1; - lvI.pszText = ( userGroup == UserGroup::Admin ) ? L"Admin" : L"User"; + wchar_t adminText[] = L"Admin"; + wchar_t userText[] = L"User"; + lvI.pszText = (userGroup == UserGroup::Admin) ? adminText : userText; ListView_SetItem( hwndListView, &lvI ); diff --git a/src/apps/win/EditUserDialog.hpp b/src/apps/win/EditUserDialog.hpp index 87f09f0..df46591 100644 --- a/src/apps/win/EditUserDialog.hpp +++ b/src/apps/win/EditUserDialog.hpp @@ -23,6 +23,7 @@ #include #include +#include typedef struct { diff --git a/src/apps/win/cam2web.rc b/src/apps/win/cam2web.rc index badac123064fac92ff167c5db56253acd0646f1c..2988e2133b46a5fe1b1727f132f1e8140bd5e9f1 100644 GIT binary patch literal 12627 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 literal 25964 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 Aq5uE@ diff --git a/src/core/cameras/DirectShow/XLocalVideoDevice.cpp b/src/core/cameras/DirectShow/XLocalVideoDevice.cpp index 4e9b4f1..c2ad35d 100644 --- a/src/core/cameras/DirectShow/XLocalVideoDevice.cpp +++ b/src/core/cameras/DirectShow/XLocalVideoDevice.cpp @@ -31,7 +31,7 @@ #include // Include qedit.h to get ISampleGrabberCB declaration #include - +DEFINE_GUID(CLSID_SampleGrabber,0xc1f400a0,0x3f08,0x11d3,0x9f,0x0b,0x00,0x60,0x08,0x03,0x9e,0x37); #include "XLocalVideoDevice.hpp" #include "XManualResetEvent.hpp" @@ -141,14 +141,14 @@ namespace Private XError SetVideoProperty( XVideoProperty property, int32_t value, bool automatic ); XError GetVideoProperty( XVideoProperty property, int32_t* value, bool* automatic ) const; - XError GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const; + XError GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const; // Camera's control configuration bool IsCameraConfigSupported( ) const; XError SetCameraProperty( XCameraProperty property, int32_t value, bool automatic ); XError GetCameraProperty( XCameraProperty property, int32_t* value, bool* automatic ) const; - XError GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const; + XError GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const; private: // Run video loop in a background thread @@ -619,9 +619,9 @@ XError XLocalVideoDevice::GetVideoProperty( XVideoProperty property, int32_t* va } // Get range of values supported by the specified video property -XError XLocalVideoDevice::GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const +XError XLocalVideoDevice::GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const { - return mData->GetVideoPropertyRange( property, min, max, step, default, isAutomaticSupported ); + return mData->GetVideoPropertyRange( property, min, max, step, defaultValue, isAutomaticSupported ); } // Check if camera configuration is supported @@ -643,9 +643,9 @@ XError XLocalVideoDevice::GetCameraProperty( XCameraProperty property, int32_t* } // Get range of values supported by the specified camera property -XError XLocalVideoDevice::GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const +XError XLocalVideoDevice::GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const { - return mData->GetCameraPropertyRange( property, min, max, step, default, isAutomaticSupported ); + return mData->GetCameraPropertyRange( property, min, max, step, defaultValue, isAutomaticSupported ); } namespace Private @@ -936,7 +936,7 @@ void XLocalVideoDeviceData::RunVideo( bool run ) // configure all video properties, which were set before device got running for ( auto property : VideoPropertiesToSet ) { - configOK &= SetVideoProperty( property.first, property.second.first, property.second.second ); + configOK &= static_cast(SetVideoProperty(property.first, property.second.first, property.second.second)); } VideoPropertiesToSet.clear( ); @@ -955,7 +955,7 @@ void XLocalVideoDeviceData::RunVideo( bool run ) // configure all camera properties, which were set before device got running for ( auto property : CameraPropertiesToSet ) { - configOK &= SetCameraProperty( property.first, property.second.first, property.second.second ); + configOK &= static_cast(SetCameraProperty( property.first, property.second.first, property.second.second )); } CameraPropertiesToSet.clear( ); @@ -1185,12 +1185,12 @@ XError XLocalVideoDeviceData::GetVideoProperty( XVideoProperty property, int32_t } // Get range of values supported by the specified video property -XError XLocalVideoDeviceData::GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const +XError XLocalVideoDeviceData::GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const { lock_guard lock( RunningSync ); XError ret = XError::Success; - if ( ( min == nullptr ) || ( max == nullptr ) || ( step == nullptr ) || ( default == nullptr ) || ( isAutomaticSupported == nullptr ) ) + if ( ( min == nullptr ) || ( max == nullptr ) || ( step == nullptr ) || ( defaultValue == nullptr ) || ( isAutomaticSupported == nullptr ) ) { ret = XError::NullPointer; } @@ -1220,7 +1220,7 @@ XError XLocalVideoDeviceData::GetVideoPropertyRange( XVideoProperty property, in *min = propMin; *max = propMax; *step = propStep; - *default = propDef; + *defaultValue = propDef; *isAutomaticSupported = ( propFlags & VideoProcAmp_Flags_Auto ); } @@ -1333,12 +1333,12 @@ XError XLocalVideoDeviceData::GetCameraProperty( XCameraProperty property, int32 } // Get range of values supported by the specified camera property -XError XLocalVideoDeviceData::GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const +XError XLocalVideoDeviceData::GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const { lock_guard lock( RunningSync ); XError ret = XError::Success; - if ( ( min == nullptr ) || ( max == nullptr ) || ( step == nullptr ) || ( default == nullptr ) || ( isAutomaticSupported == nullptr ) ) + if ( ( min == nullptr ) || ( max == nullptr ) || ( step == nullptr ) || ( defaultValue == nullptr ) || ( isAutomaticSupported == nullptr ) ) { ret = XError::NullPointer; } @@ -1368,7 +1368,7 @@ XError XLocalVideoDeviceData::GetCameraPropertyRange( XCameraProperty property, *min = propMin; *max = propMax; *step = propStep; - *default = propDef; + *defaultValue = propDef; *isAutomaticSupported = ( propFlags & CameraControl_Flags_Auto ); } diff --git a/src/core/cameras/DirectShow/XLocalVideoDevice.hpp b/src/core/cameras/DirectShow/XLocalVideoDevice.hpp index 7bdc176..caf43cc 100644 --- a/src/core/cameras/DirectShow/XLocalVideoDevice.hpp +++ b/src/core/cameras/DirectShow/XLocalVideoDevice.hpp @@ -129,7 +129,7 @@ class XLocalVideoDevice : public IVideoSource, private Uncopyable // Get current value if the specified video property. The device must be running. XError GetVideoProperty( XVideoProperty property, int32_t* value, bool* automatic = nullptr ) const; // Get range of values supported by the specified video property - XError GetVideoPropertyRange( XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const; + XError GetVideoPropertyRange(XVideoProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported) const; // Check if camera configuration is supported (device must be running) bool IsCameraConfigSupported( ) const; @@ -140,7 +140,7 @@ class XLocalVideoDevice : public IVideoSource, private Uncopyable // Get current value if the specified camera property. The device must be running. XError GetCameraProperty( XCameraProperty property, int32_t* value, bool* automatic = nullptr ) const; // Get range of values supported by the specified camera property - XError GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* default, bool* isAutomaticSupported ) const; + XError GetCameraPropertyRange( XCameraProperty property, int32_t* min, int32_t* max, int32_t* step, int32_t* defaultValue, bool* isAutomaticSupported ) const; private: Private::XLocalVideoDeviceData* mData; diff --git a/src/core/cameras/DirectShow/XLocalVideoDeviceConfig.cpp b/src/core/cameras/DirectShow/XLocalVideoDeviceConfig.cpp index 9c4452c..37a3a5f 100644 --- a/src/core/cameras/DirectShow/XLocalVideoDeviceConfig.cpp +++ b/src/core/cameras/DirectShow/XLocalVideoDeviceConfig.cpp @@ -208,23 +208,23 @@ XError XLocalVideoDevicePropsInfo::GetProperty( const std::string& propertyName, } else { - int32_t min = 0, max = 0, step = 0, default = 0; + int32_t min = 0, max = 0, step = 0, defaultValue = 0; bool isAutoSupported; - // get property features - min/max/default/etc + // get property features - min/max/defaultValue/etc if ( itSupportedProperty->second.PropertyKind == PROP_KIND_VIDEO ) { - ret = mCamera->GetVideoPropertyRange( static_cast( itSupportedProperty->second.Property ), &min, &max, &step, &default, &isAutoSupported ); + ret = mCamera->GetVideoPropertyRange( static_cast( itSupportedProperty->second.Property ), &min, &max, &step, &defaultValue, &isAutoSupported ); } else { if ( itSupportedProperty->second.ValueType == TYPE_INT ) { - ret = mCamera->GetCameraPropertyRange( static_cast< XCameraProperty >( itSupportedProperty->second.Property ), &min, &max, &step, &default, &isAutoSupported ); + ret = mCamera->GetCameraPropertyRange( static_cast< XCameraProperty >( itSupportedProperty->second.Property ), &min, &max, &step, &defaultValue, &isAutoSupported ); } else { - default = true; + defaultValue = true; } } @@ -233,12 +233,12 @@ XError XLocalVideoDevicePropsInfo::GetProperty( const std::string& propertyName, if ( itSupportedProperty->second.ValueType == TYPE_INT ) { sprintf( buffer, "{\"min\":%d,\"max\":%d,\"def\":%d,\"type\":\"int\",\"order\":%d,\"name\":\"%s\"}", - min, max, default, itSupportedProperty->second.Order, itSupportedProperty->second.Name ); + min, max, defaultValue, itSupportedProperty->second.Order, itSupportedProperty->second.Name ); } else { sprintf( buffer, "{\"def\":%d,\"type\":\"bool\",\"order\":%d,\"name\":\"%s\"}", - default, itSupportedProperty->second.Order, itSupportedProperty->second.Name ); + defaultValue, itSupportedProperty->second.Order, itSupportedProperty->second.Name ); } value = buffer; From 4c95761efef34160b87f772809c03fb3104e65b3 Mon Sep 17 00:00:00 2001 From: kreijstal Date: Wed, 13 Dec 2023 00:51:31 +0100 Subject: [PATCH 02/12] I really didn't know what to do so I just hacked a makefile --- src/apps/win/makefile | 72 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/apps/win/makefile diff --git a/src/apps/win/makefile b/src/apps/win/makefile new file mode 100644 index 0000000..edf92d0 --- /dev/null +++ b/src/apps/win/makefile @@ -0,0 +1,72 @@ +# Compiler settings +CXX = g++ +CXXFLAGS = -Wall -g -DUNICODE -D_UNICODE -D_DEBUG -mssse3 -std=c++0x -fpermissive +INCLUDES = -I../../core/ -I../../core/cameras/DirectShow/ -I../../../externals/mongoose/ + +# Application name +APP = cam2web + +# Source files +CPP_SOURCES = $(wildcard *.cpp) $(wildcard ../../core/*.cpp) $(wildcard ../../core/cameras/DirectShow/*.cpp) +C_SOURCES = $(wildcard ../../../externals/mongoose/*.c) + +# Object files +CPP_OBJECTS = $(CPP_SOURCES:.cpp=.o) +C_OBJECTS = $(C_SOURCES:.c=.o) + +# Libraries to link against +LIBS = -lcomctl32 -lgdi32 -ljpeg -pthread -lIphlpapi -lole32 -lOleAut32 -lstrmiids -luuid -lrpcrt4 -lws2_32 -municode -Wl,-subsystem,windows + +# Output folder +OUT_FOLDER = ../../../build/gcc/ + +# Resource file +RES_FILE = cam2web.rc +RES_OBJECT = cam2web_res.o # Changed to a unique name + +# Default target +all: $(APP) + +# Rule to compile the resource file +$(RES_OBJECT): $(RES_FILE) + windres $(RES_FILE) -O coff -o $(RES_OBJECT) + +# Linking the application +$(APP): $(CPP_OBJECTS) $(C_OBJECTS) $(RES_OBJECT) + $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUT_FOLDER)/$(APP) $(CPP_OBJECTS) $(C_OBJECTS) $(LIBS) $(RES_OBJECT) + +# Compiling C++ source files into object files +%.o: %.cpp + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ + +# Compiling C source files into object files +%.o: %.c + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ + +copyweb: + mkdir -p $(OUT_WEB) + cp ../../web/* $(OUT_WEB) + cp ../../../externals/jquery/*.js $(OUT_WEB) + cp ../../../externals/jquery/*.css $(OUT_WEB) + cp -r $(OUT_WEB) . + +generateweb: + mkdir -p $(OUT_INC) + cp ../../web/* $(OUT_INC) + cp ../../../externals/jquery/*.js $(OUT_INC) + cp ../../../externals/jquery/*.css $(OUT_INC) + $(WEB2H) -i $(OUT_INC)index.html -o $(OUT_INC)index.html.h + $(WEB2H) -i $(OUT_INC)styles.css -o $(OUT_INC)styles.css.h + $(WEB2H) -i $(OUT_INC)cam2web.png -o $(OUT_INC)cam2web.png.h + $(WEB2H) -i $(OUT_INC)cam2web_white.png -o $(OUT_INC)cam2web_white.png.h + $(WEB2H) -i $(OUT_INC)cameraproperties.html -o $(OUT_INC)cameraproperties.html.h + $(WEB2H) -i $(OUT_INC)camera.js -o $(OUT_INC)camera.js.h + $(WEB2H) -i $(OUT_INC)cameraproperties.js -o $(OUT_INC)cameraproperties.js.h + $(WEB2H) -i $(OUT_INC)jquery.js -o $(OUT_INC)jquery.js.h + $(WEB2H) -i $(OUT_INC)jquery.mobile.js -o $(OUT_INC)jquery.mobile.js.h + $(WEB2H) -i $(OUT_INC)jquery.mobile.css -o $(OUT_INC)jquery.mobile.css.h + rm $(OUT_INC)*.html + rm $(OUT_INC)*.css + rm $(OUT_INC)*.js +# Phony targets +.PHONY: all clean From 1117ee74899b2ed4175163ac9704aa69acf8ed75 Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 11:57:17 +0100 Subject: [PATCH 03/12] Create c-cpp.yml --- .github/workflows/c-cpp.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/c-cpp.yml diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml new file mode 100644 index 0000000..04c5e33 --- /dev/null +++ b/.github/workflows/c-cpp.yml @@ -0,0 +1,21 @@ +name: C/C++ CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: windows-latest + + steps: + - uses: msys2/setup-msys2@v2 + with: + msystem: MINGW64 + install: mingw-w64-x86_64-gcc + upgrade: true + - name: make + run: cd src/apps/win/&&make From d8ffcf8806a60aef5464261b35eb2ab13bec9247 Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 12:29:21 +0100 Subject: [PATCH 04/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 04c5e33..ff1b1c7 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -18,4 +18,5 @@ jobs: install: mingw-w64-x86_64-gcc upgrade: true - name: make + shell: msys2 {0} run: cd src/apps/win/&&make From 342721ab68792aea898cfd971fe0c17556277e3c Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 12:32:08 +0100 Subject: [PATCH 05/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index ff1b1c7..6185fc4 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -11,12 +11,20 @@ jobs: runs-on: windows-latest + steps: + - uses: actions/checkout@v3 - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 install: mingw-w64-x86_64-gcc upgrade: true + - name: Print working directory + shell: msys2 {0} + run: pwd + - name: List files + shell: msys2 {0} + run: ls -la - name: make shell: msys2 {0} - run: cd src/apps/win/&&make + run: cd src/apps/win/ && make From a22a592eba51b85f2d80a1a624febafb14c014ce Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 12:36:17 +0100 Subject: [PATCH 06/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 6185fc4..3a5bd30 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,8 +17,7 @@ jobs: - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 - install: mingw-w64-x86_64-gcc - upgrade: true + install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make - name: Print working directory shell: msys2 {0} run: pwd From 3b0c75d8829874c6a43c34b6de61f7dc93e142e3 Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 12:44:07 +0100 Subject: [PATCH 07/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 3a5bd30..6da164a 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,7 +17,8 @@ jobs: - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 - install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make + install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make make + update: true - name: Print working directory shell: msys2 {0} run: pwd From 7d853274eead77861e8dbc73372e97734c3905fc Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 13:43:14 +0100 Subject: [PATCH 08/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 6da164a..348e623 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,7 +17,7 @@ jobs: - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 - install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make make + install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make make mingw-w64-x86_64-libjpeg-turbo update: true - name: Print working directory shell: msys2 {0} From 090c1d26f075c090db9279aa4b9156791def1dfd Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 13:59:46 +0100 Subject: [PATCH 09/12] Update makefile --- src/apps/win/makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/apps/win/makefile b/src/apps/win/makefile index edf92d0..6e607c1 100644 --- a/src/apps/win/makefile +++ b/src/apps/win/makefile @@ -22,8 +22,7 @@ OUT_FOLDER = ../../../build/gcc/ # Resource file RES_FILE = cam2web.rc -RES_OBJECT = cam2web_res.o # Changed to a unique name - +RES_OBJECT = cam2web.res # Default target all: $(APP) @@ -33,7 +32,7 @@ $(RES_OBJECT): $(RES_FILE) # Linking the application $(APP): $(CPP_OBJECTS) $(C_OBJECTS) $(RES_OBJECT) - $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUT_FOLDER)/$(APP) $(CPP_OBJECTS) $(C_OBJECTS) $(LIBS) $(RES_OBJECT) + $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUT_FOLDER)$(APP) $(CPP_OBJECTS) $(C_OBJECTS) $(LIBS) $(RES_OBJECT) # Compiling C++ source files into object files %.o: %.cpp From c6beea64f185f1b5c58ca35f5c0611f7a5ee90af Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 14:03:17 +0100 Subject: [PATCH 10/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 348e623..ae4631e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -19,12 +19,9 @@ jobs: msystem: MINGW64 install: mingw-w64-x86_64-gcc mingw-w64-x86_64-make make mingw-w64-x86_64-libjpeg-turbo update: true - - name: Print working directory + - name: create build dir shell: msys2 {0} - run: pwd - - name: List files - shell: msys2 {0} - run: ls -la + run: mkdir build/gcc - name: make shell: msys2 {0} run: cd src/apps/win/ && make From 4554a2a88aa365446d59f58cc7979187c17a52d2 Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Thu, 14 Dec 2023 14:06:02 +0100 Subject: [PATCH 11/12] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index ae4631e..dabb7c5 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -21,7 +21,7 @@ jobs: update: true - name: create build dir shell: msys2 {0} - run: mkdir build/gcc + run: mkdir -p build/gcc - name: make shell: msys2 {0} run: cd src/apps/win/ && make From bd2cf8f04d3b1a93a8ccddde931cb37b0714b4fe Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Wed, 27 Mar 2024 17:10:12 +0100 Subject: [PATCH 12/12] Update XLocalVideoDevice.cpp hopefully no longer needed --- src/core/cameras/DirectShow/XLocalVideoDevice.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/cameras/DirectShow/XLocalVideoDevice.cpp b/src/core/cameras/DirectShow/XLocalVideoDevice.cpp index c2ad35d..0b2f4d2 100644 --- a/src/core/cameras/DirectShow/XLocalVideoDevice.cpp +++ b/src/core/cameras/DirectShow/XLocalVideoDevice.cpp @@ -31,7 +31,6 @@ #include // Include qedit.h to get ISampleGrabberCB declaration #include -DEFINE_GUID(CLSID_SampleGrabber,0xc1f400a0,0x3f08,0x11d3,0x9f,0x0b,0x00,0x60,0x08,0x03,0x9e,0x37); #include "XLocalVideoDevice.hpp" #include "XManualResetEvent.hpp"