diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f951d32e..5dd87e20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,15 @@ name: RGB.NET-CI on: - push: - branches: [ Development ] - paths: - - '**.cs' - - '**.csproj' - - '**.yml' + workflow_dispatch: + inputs: + version: + description: 'version' + required: true + type: string + increment: + required: true + type: string jobs: build: @@ -24,16 +27,10 @@ jobs: 8.0.x 7.0.x 6.0.x - - name: Git Semantic Version - id: versioning - uses: PaulHatch/semantic-version@v4.0.3 - with: - short_tags: false - format: "${major}.${minor}.${patch}-prerelease.${increment}" - name: Restore dependencies run: dotnet restore - name: Build - run: dotnet build --no-restore --configuration Release /p:Version=${{ steps.versioning.outputs.version }} + run: dotnet build --no-restore --configuration Release /p:Version=${{ github.event.inputs.version }}-prerelease.${{ github.event.inputs.increment }} - name: Test run: dotnet test --no-build --verbosity normal --configuration Release - name: Upload a Build Artifact NET6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd31f5e0..25047824 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,12 @@ name: RGB.NET-Release on: - push: - branches: [ master ] - paths: - - '**.cs' - - '**.csproj' - - '**.yml' + workflow_dispatch: + inputs: + version: + description: 'version' + required: true + type: string jobs: build: @@ -23,16 +23,10 @@ jobs: 8.0.x 7.0.x 6.0.x - - name: Git Semantic Version - id: versioning - uses: PaulHatch/semantic-version@v4.0.3 - with: - short_tags: false - format: "${major}.${minor}.${patch}" - name: Restore dependencies run: dotnet restore - name: Build - run: dotnet build --no-restore --configuration Release /p:Version=${{ steps.versioning.outputs.version }} + run: dotnet build --no-restore --configuration Release /p:Version=${{ github.event.inputs.version }} - name: Test run: dotnet test --no-build --verbosity normal --configuration Release - name: Upload a Build Artifact NET6 @@ -62,7 +56,7 @@ jobs: - name: Release uses: softprops/action-gh-release@v1 with: - tag_name: ${{ steps.versioning.outputs.version_tag }} + tag_name: v${{ github.event.inputs.version }} generate_release_notes: true files: bin/net8.0/RGB.NET.*.dll - name: Nuget Push diff --git a/RGB.NET.Devices.Corsair/Native/_CUESDK.cs b/RGB.NET.Devices.Corsair/Native/_CUESDK.cs index 00d9f922..38324e35 100644 --- a/RGB.NET.Devices.Corsair/Native/_CUESDK.cs +++ b/RGB.NET.Devices.Corsair/Native/_CUESDK.cs @@ -47,6 +47,9 @@ internal static unsafe class _CUESDK #region Properties & Fields + // ReSharper disable once NotAccessedField.Local - This is important, the delegate can be collected if it's not stored! + private static readonly CorsairSessionStateChangedHandler SESSION_STATE_CHANGED_CALLBACK; + internal static bool IsConnected => SesionState == CorsairSessionState.Connected; internal static CorsairSessionState SesionState { get; private set; } @@ -58,6 +61,15 @@ internal static unsafe class _CUESDK #endregion + #region Constructors + + static _CUESDK() + { + SESSION_STATE_CHANGED_CALLBACK = CorsairSessionStateChangedCallback; + } + + #endregion + #region Methods private static void CorsairSessionStateChangedCallback(nint context, _CorsairSessionStateChanged eventdata) @@ -174,7 +186,7 @@ internal static CorsairError CorsairConnect() { if (_corsairConnectPtr == null) throw new RGBDeviceException("The Corsair-SDK is not initialized."); if (IsConnected) throw new RGBDeviceException("The Corsair-SDK is already connected."); - return _corsairConnectPtr(CorsairSessionStateChangedCallback, 0); + return _corsairConnectPtr(SESSION_STATE_CHANGED_CALLBACK, 0); } internal static CorsairError CorsairGetSessionDetails(out _CorsairSessionDetails? details)