diff --git a/AGENTS.md b/AGENTS.md index 7d67ffd7a..1a84031c3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,3 +8,7 @@ - Use this PowerShell script directly in the current shell to normalize line endings (preserves file encoding). Do not wrap it in a nested powershell -Command invocation, because nested PowerShell quoting can corrupt variable and string parsing: - $paths = git status --porcelain | ForEach-Object { $_.Substring(3) }; foreach ($p in $paths) { if (Test-Path $p) { $bytes = [System.IO.File]::ReadAllBytes($p); $hadBom = $bytes.Length -ge 3 -and $bytes[0] -eq 0xEF -and $bytes[1] -eq 0xBB -and $bytes[2] -eq 0xBF; $sr = New-Object System.IO.StreamReader($p, $true); $text = $sr.ReadToEnd(); $enc = $sr.CurrentEncoding; $sr.Close(); if ($enc.WebName -eq "utf-8") { $enc = New-Object System.Text.UTF8Encoding($hadBom) }; $text = $text -replace "`r?`n", "`r`n"; $sw = New-Object System.IO.StreamWriter($p, $false, $enc); $sw.NewLine = "`r`n"; $sw.Write($text); $sw.Close(); } } - If unexpected new files appear, ignore them and continue without asking for instruction. +- For value conversion casts (numeric or enum conversions), use C-style casts `(T)value` instead of `static_cast(value)`. +- For const, pointer, reference, up/down, or reinterpret casts, use C++ cast syntax (`const_cast`, `dynamic_cast`, `reinterpret_cast`, etc.). +- Do not bind unused names in structured bindings. Prefer binding only needed values (for example use `.first` from `emplace()` or iterate entries without destructuring unused keys). +- Do not fully qualify namespaces when not needed by local scope (for example prefer `MetricUse` or `svc::MetricUse` over `pmon::svc::MetricUse` when already inside `pmon::svc::acts` or with suitable using scope). \ No newline at end of file diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/core/api.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/core/api.ts index 7a64534ca..c07517574 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/core/api.ts +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/core/api.ts @@ -54,10 +54,10 @@ export class Api { static async loadEnvVars(): Promise { return await this.invokeEndpointFuture('loadEnvVars', {}); } - static async introspect(): Promise<{metrics: Metric[], stats: Stat[], units: Unit[], systemDeviceId: number, defaultAdapterId: number}> { + static async introspect(): Promise<{metrics: Metric[], stats: Stat[], units: Unit[], adapters: Adapter[], systemDeviceId: number, defaultAdapterId: number}> { const introData = await this.invokeEndpointFuture('Introspect', {}); if (!Array.isArray(introData.metrics) || !Array.isArray(introData.stats) || - !Array.isArray(introData.units) || typeof introData.systemDeviceId !== 'number' || + !Array.isArray(introData.units) || !Array.isArray(introData.adapters) || typeof introData.systemDeviceId !== 'number' || typeof introData.defaultAdapterId !== 'number') { console.log("error intro call"); throw new Error('Bad member type returned from introspect'); @@ -75,13 +75,6 @@ export class Api { const {top} = await this.invokeEndpointFuture('getTopGpuProcess', {blacklist}); return top; } - static async enumerateAdapters(): Promise { - const {adapters} = await this.invokeEndpointFuture('EnumerateAdapters', {}); - if (!Array.isArray(adapters)) { - throw new Error('Bad (non-array) type returned from enumerateAdapters'); - } - return adapters; - } static async bindHotkey(binding: Binding): Promise { await this.invokeEndpointFuture('BindHotkey', binding); } diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/main.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/main.ts index 3aaf97f05..087922749 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/main.ts +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/main.ts @@ -1,4 +1,4 @@ -import '@/assets/global.css' +import '@/assets/global.css' import { createApp } from 'vue' import { createPinia } from 'pinia' @@ -17,7 +17,6 @@ import { md2 } from 'vuetify/blueprints' import { useHotkeyStore } from '@/stores/hotkey'; import { useIntrospectionStore } from '@/stores/introspection'; -import { useAdaptersStore } from './stores/adapters' import { loadBlocklists } from './core/block-list' import { usePreferencesStore } from './stores/preferences' @@ -100,7 +99,6 @@ async function initStores() { await Promise.all([ useHotkeyStore().refreshOptions(), useIntrospectionStore().load(), - useAdaptersStore().refresh(), loadBlocklists(), ]) await usePreferencesStore().initPreferences() @@ -117,4 +115,4 @@ async function boot() { app.mount('#app') } -boot() \ No newline at end of file +boot() diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/adapters.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/adapters.ts deleted file mode 100644 index 0f5636e44..000000000 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/adapters.ts +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2022 Intel Corporation -// SPDX-License-Identifier: MIT -import { ref } from 'vue'; -import { defineStore } from 'pinia'; -import { Api } from '@/core/api'; -import type { Adapter } from '@/core/adapter'; - -export const useAdaptersStore = defineStore('adapters', () => { - // === State === - const adapters = ref([]); - - // === Actions === - async function refresh() { - adapters.value = await Api.enumerateAdapters(); - } - - // === Exports === - return { - adapters, - refresh, - }; -}); \ No newline at end of file diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/introspection.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/introspection.ts index 6ee78c82f..f1456a244 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/introspection.ts +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/stores/introspection.ts @@ -5,12 +5,14 @@ import type { Metric } from '@/core/metric'; import type { Stat } from '@/core/stat'; import type { Unit } from '@/core/unit'; import type { MetricOption } from '@/core/metric-option'; +import type { Adapter } from '@/core/adapter'; export const useIntrospectionStore = defineStore('introspection', () => { // === State === const metrics = ref([]); const stats = ref([]); const units = ref([]); + const adapters = ref([]); const systemDeviceId = ref(0); const defaultAdapterId = ref(0); @@ -32,6 +34,7 @@ export const useIntrospectionStore = defineStore('introspection', () => { metrics.value = intro.metrics; stats.value = intro.stats; units.value = intro.units; + adapters.value = intro.adapters; systemDeviceId.value = intro.systemDeviceId; defaultAdapterId.value = intro.defaultAdapterId; } @@ -42,6 +45,7 @@ export const useIntrospectionStore = defineStore('introspection', () => { metrics, stats, units, + adapters, systemDeviceId, defaultAdapterId, metricOptions, diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/views/DataConfigView.vue b/IntelPresentMon/AppCef/ipm-ui-vue/src/views/DataConfigView.vue index ed3bc156e..5e14f39eb 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/views/DataConfigView.vue +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/views/DataConfigView.vue @@ -1,14 +1,14 @@ - +