mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
fix(bar): defer update to next cycle
This commit is contained in:
@@ -11,46 +11,59 @@
|
||||
}
|
||||
|
||||
:root {
|
||||
/* Core Color Palette Overrides */
|
||||
/* --- Core Palette Overrides --- */
|
||||
--zen-colors-primary: var(--base) !important;
|
||||
--zen-primary-color: var(--base) !important;
|
||||
--zen-colors-secondary: var(--surface) !important;
|
||||
--zen-colors-tertiary: var(--overlay) !important;
|
||||
--zen-colors-border: var(--primary) !important;
|
||||
|
||||
/* Backgrounds */
|
||||
/* --- Internal Zen Color Variables --- */
|
||||
--zen-primary-color: var(--primary) !important;
|
||||
--zen-colors-primary: var(--base) !important;
|
||||
--zen-colors-secondary: var(--surface) !important;
|
||||
--zen-colors-tertiary: var(--base) !important;
|
||||
|
||||
/* --- Backgrounds --- */
|
||||
--toolbar-bgcolor: var(--base) !important;
|
||||
--newtab-background-color: var(--overlay) !important;
|
||||
--zen-themed-toolbar-bg: var(--base) !important;
|
||||
--zen-main-browser-background: var(--base) !important;
|
||||
--toolbox-bgcolor-inactive: var(--base) !important;
|
||||
--zen-urlbar-background: var(--surface) !important;
|
||||
--zen-colors-input-bg: var(--surface) !important;
|
||||
--zen-themed-toolbar-bg-transparent: transparent !important;
|
||||
|
||||
/* Text & Icons */
|
||||
/* --- Text & Icons --- */
|
||||
--lwt-text-color: var(--text) !important;
|
||||
--toolbarbutton-icon-fill: var(--primary) !important;
|
||||
--toolbar-field-color: var(--text) !important;
|
||||
--toolbar-field-focus-color: var(--text) !important;
|
||||
--toolbar-color: var(--text) !important;
|
||||
--toolbox-textcolor: var(--text) !important;
|
||||
--toolbox-textcolor-inactive: var(--text) !important;
|
||||
--tab-selected-textcolor: var(--primary) !important;
|
||||
--newtab-text-primary-color: var(--text) !important;
|
||||
|
||||
/* Popups & Menus */
|
||||
/* --- Popups, Menus & Sidebars --- */
|
||||
--arrowpanel-color: var(--text) !important;
|
||||
--arrowpanel-background: var(--overlay) !important;
|
||||
|
||||
/* Sidebar Stuff */
|
||||
--sidebar-text-color: var(--text) !important;
|
||||
--lwt-sidebar-text-color: var(--text) !important;
|
||||
--lwt-sidebar-background-color: var(--base) !important;
|
||||
|
||||
/* --- Tab Selection --- */
|
||||
--tab-selected-textcolor: var(--primary) !important;
|
||||
}
|
||||
|
||||
/* Element Specific Overrides */
|
||||
/* --- Sidebar & Layout --- */
|
||||
|
||||
#permissions-granted-icon {
|
||||
color: var(--base) !important;
|
||||
#navigator-toolbox,
|
||||
#zen-tabbox-wrapper,
|
||||
.sidebar-panel {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
background-color: var(--base) !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
.sidebar-placesTree {
|
||||
@@ -61,29 +74,27 @@
|
||||
background-color: var(--surface) !important;
|
||||
}
|
||||
|
||||
#urlbar-background {
|
||||
background-color: var(--surface) !important;
|
||||
#zen-appcontent-navbar-container {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
.tab-background[selected=""] {
|
||||
background: var(--overlay) !important;
|
||||
}
|
||||
/* --- Navigation Controls --- */
|
||||
|
||||
.content-shortcuts {
|
||||
background-color: var(--surface) !important;
|
||||
border-color: var(--secondary) !important;
|
||||
}
|
||||
|
||||
.urlbarView-url {
|
||||
#back-button .toolbarbutton-icon,
|
||||
#forward-button .toolbarbutton-icon,
|
||||
#reload-button .toolbarbutton-icon,
|
||||
#stop-button .toolbarbutton-icon,
|
||||
#PanelUI-menu-button .toolbarbutton-icon,
|
||||
#unified-extensions-button .toolbarbutton-icon,
|
||||
#nav-bar-overflow-button .toolbarbutton-icon,
|
||||
#zen-toggle-compact-mode .toolbarbutton-icon {
|
||||
fill: var(--primary) !important;
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
#zenEditBookmarkPanelFaviconContainer {
|
||||
background: var(--base) !important;
|
||||
}
|
||||
|
||||
#zen-toast-container {
|
||||
color: var(--primary) !important;
|
||||
#back-button[disabled] .toolbarbutton-icon,
|
||||
#forward-button[disabled] .toolbarbutton-icon {
|
||||
opacity: 0.3 !important;
|
||||
}
|
||||
|
||||
toolbar .toolbarbutton-1 {
|
||||
@@ -98,6 +109,65 @@ toolbar .toolbarbutton-1 {
|
||||
}
|
||||
}
|
||||
|
||||
/* --- URL Bar --- */
|
||||
|
||||
#urlbar-input {
|
||||
color: var(--text) !important;
|
||||
}
|
||||
|
||||
#urlbar-input::selection {
|
||||
background-color: var(--primary) !important;
|
||||
color: var(--on_primary) !important;
|
||||
}
|
||||
|
||||
.urlbar-background {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
#urlbar-input-container {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
.urlbarView-url {
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
.urlbarView-favicon {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
#urlbar-results {
|
||||
background-color: var(--overlay) !important;
|
||||
color: var(--text) !important;
|
||||
}
|
||||
|
||||
/* --- UI Components --- */
|
||||
|
||||
#zen-toast-container {
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
#PanelUI-menu-button[open] .toolbarbutton-icon {
|
||||
fill: var(--primary) !important;
|
||||
}
|
||||
|
||||
#permissions-granted-icon {
|
||||
color: var(--base) !important;
|
||||
}
|
||||
|
||||
.tab-background[selected=""] {
|
||||
background: var(--overlay) !important;
|
||||
}
|
||||
|
||||
.content-shortcuts {
|
||||
background-color: var(--surface) !important;
|
||||
border-color: var(--secondary) !important;
|
||||
}
|
||||
|
||||
#zenEditBookmarkPanelFaviconContainer {
|
||||
background: var(--base) !important;
|
||||
}
|
||||
|
||||
#TabsToolbar {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
@@ -105,17 +175,3 @@ toolbar .toolbarbutton-1 {
|
||||
hbox#titlebar {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
#zen-appcontent-navbar-container {
|
||||
background-color: var(--base) !important;
|
||||
}
|
||||
|
||||
/* Zen toast/indicator contrast visibility issue fix */
|
||||
#zen-toast-container {
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
/* Pane UI button visibility issue fix */
|
||||
#PanelUI-menu-button[open] .toolbarbutton-icon {
|
||||
fill: var(--primary) !important;
|
||||
}
|
||||
|
||||
+8
-3
@@ -142,13 +142,18 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize models — deferred to next event-loop tick via Qt.callLater to avoid
|
||||
// re-entrant incubation: Component.onCompleted fires during QQmlObjectCreator::finalize,
|
||||
// Initialize models — deferred via Timer (Qt.callLater can fire in same event cycle)
|
||||
// to avoid re-entrant incubation: Component.onCompleted fires during finalization,
|
||||
// and ListModel.append synchronously creates Repeater delegates whose own finalization
|
||||
// can corrupt the V4 heap (SIGSEGV in QV4::Object::insertMember).
|
||||
Timer {
|
||||
id: initModelsTimer
|
||||
interval: 0
|
||||
onTriggered: root._initModels()
|
||||
}
|
||||
Component.onCompleted: {
|
||||
Logger.d("Bar", "Bar Component.onCompleted for screen:", screen?.name);
|
||||
Qt.callLater(root._initModels);
|
||||
initModelsTimer.restart();
|
||||
}
|
||||
|
||||
function _initModels() {
|
||||
|
||||
@@ -72,8 +72,33 @@ Item {
|
||||
Loader {
|
||||
id: loader
|
||||
anchors.fill: parent
|
||||
asynchronous: true
|
||||
active: root.checkWidgetExists() && (root.reloadCounter >= 0)
|
||||
asynchronous: false
|
||||
|
||||
// Deferred activation to prevent re-entrant incubation crash:
|
||||
// When ListModel.append() creates this delegate, the Repeater is mid-incubation.
|
||||
// If this Loader activates synchronously (asynchronous: false) during delegate
|
||||
// finalization, it triggers nested QQmlIncubatorPrivate::incubate which corrupts
|
||||
// the V4 heap (SIGSEGV in QV4::Object::insertMember).
|
||||
// Deferring to the next event loop iteration breaks the nesting.
|
||||
property bool _ready: false
|
||||
active: _ready && root.checkWidgetExists() && (root.reloadCounter >= 0)
|
||||
|
||||
Timer {
|
||||
id: activateTimer
|
||||
interval: 0
|
||||
onTriggered: loader._ready = true
|
||||
}
|
||||
|
||||
Component.onCompleted: activateTimer.start()
|
||||
|
||||
// Reset _ready when reloadCounter changes to force a deferred re-activation
|
||||
Connections {
|
||||
target: root
|
||||
function onReloadCounterChanged() {
|
||||
loader._ready = false;
|
||||
activateTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
sourceComponent: {
|
||||
// Depend on reloadCounter to force re-fetch of component
|
||||
|
||||
@@ -50,7 +50,7 @@ NIconButton {
|
||||
// If using distro logo, don't use theme icon.
|
||||
icon: (customIconPath === "" && !useDistroLogo) ? customIcon : ""
|
||||
tooltipText: {
|
||||
if (!screen || PanelService.getPanel("controlCenterPanel", screen)?.isPanelOpen) {
|
||||
if (PanelService.getPanel("controlCenterPanel", screen)?.isPanelOpen) {
|
||||
return "";
|
||||
} else {
|
||||
return I18n.tr("tooltips.open-control-center");
|
||||
|
||||
@@ -408,7 +408,7 @@ Item {
|
||||
}
|
||||
|
||||
onEntered: {
|
||||
if (screen && (isVertical || scrollingMode === "never") && !PanelService.getPanel("mediaPlayerPanel", screen)?.isPanelOpen) {
|
||||
if ((isVertical || scrollingMode === "never") && !PanelService.getPanel("mediaPlayerPanel", screen)?.isPanelOpen) {
|
||||
TooltipService.show(root, title, BarService.getTooltipDirection(root.screen?.name));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,15 +167,30 @@ PanelWindow {
|
||||
}
|
||||
|
||||
// When hidden changes, handle load/unload
|
||||
// Defer content load when showing to avoid re-entrant incubation crash:
|
||||
// barAutoHideStateChanged fires during workspace switch or window open. Setting
|
||||
// contentLoaded=true synchronously triggers barLoader to create Bar+widgets.
|
||||
// That nests QQmlIncubatorPrivate::incubate inside the signal handler, which
|
||||
// can corrupt the V4 heap (SIGSEGV in QV4::Object::insertMember). Use Timer
|
||||
// (not Qt.callLater - it can fire in same event cycle) to break the nesting.
|
||||
onIsHiddenChanged: {
|
||||
if (isHidden) {
|
||||
// Start fade out, then unload after animation
|
||||
unloadTimer.restart();
|
||||
} else {
|
||||
// Load immediately when showing
|
||||
unloadTimer.stop();
|
||||
deferredUnloadTimer.stop();
|
||||
contentLoaded = true;
|
||||
showContentTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: showContentTimer
|
||||
interval: 0
|
||||
onTriggered: {
|
||||
if (!barWindow.isHidden) {
|
||||
contentLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,10 +216,10 @@ PanelWindow {
|
||||
// Bar hidden — start debounced unload
|
||||
deferredUnloadTimer.restart();
|
||||
} else {
|
||||
// Bar shown — cancel pending unload, ensure content is loaded
|
||||
// Bar shown — cancel pending unload, defer content load (same nesting concern)
|
||||
deferredUnloadTimer.stop();
|
||||
if (!barWindow.isHidden) {
|
||||
barWindow.contentLoaded = true;
|
||||
showContentTimer.restart();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,10 +447,6 @@ SmartPanel {
|
||||
delegate: NBox {
|
||||
id: ethItem
|
||||
|
||||
HoverHandler {
|
||||
id: itemHover
|
||||
}
|
||||
|
||||
function getContentColors(defaultColors = [Color.mSurface, Color.mOnSurface]) {
|
||||
if (modelData.connected) {
|
||||
return [Color.mPrimary, Color.mOnPrimary];
|
||||
@@ -573,7 +569,6 @@ SmartPanel {
|
||||
|
||||
// Info button on the right
|
||||
NIconButton {
|
||||
visible: itemHover.hovered
|
||||
icon: "info"
|
||||
tooltipText: I18n.tr("common.info")
|
||||
baseSize: Style.baseWidgetSize * 0.75
|
||||
@@ -620,9 +615,9 @@ SmartPanel {
|
||||
visible: ethernetInfoExpanded && NetworkService.activeEthernetIf === modelData.ifname
|
||||
Layout.fillWidth: true
|
||||
color: Color.mSurfaceVariant
|
||||
radius: Style.radiusS
|
||||
radius: Style.radiusXS
|
||||
border.width: Style.borderS
|
||||
border.color: Color.mOutline
|
||||
border.color: Style.boxBorderColor
|
||||
implicitHeight: ethInfoGrid.implicitHeight + Style.margin2S
|
||||
clip: true
|
||||
Layout.topMargin: Style.marginXS
|
||||
@@ -634,7 +629,7 @@ SmartPanel {
|
||||
anchors.margins: Style.marginS
|
||||
icon: ethernetDetailsGrid ? "layout-list" : "layout-grid"
|
||||
tooltipText: ethernetDetailsGrid ? I18n.tr("tooltips.list-view") : I18n.tr("tooltips.grid-view")
|
||||
baseSize: Style.baseWidgetSize * 0.8
|
||||
baseSize: Style.baseWidgetSize * 0.65
|
||||
onClicked: {
|
||||
ethernetDetailsGrid = !ethernetDetailsGrid;
|
||||
Settings.data.network.wifiDetailsViewMode = ethernetDetailsGrid ? "grid" : "list";
|
||||
|
||||
@@ -25,6 +25,7 @@ Popup {
|
||||
height: Math.min(content.implicitHeight + padding * 2, maxHeight)
|
||||
padding: Style.marginXL
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: false
|
||||
anchors.centerIn: parent
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ Popup {
|
||||
height: Math.min(content.implicitHeight + dialogPadding * 2, maxHeight)
|
||||
padding: 0
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
anchors.centerIn: parent
|
||||
|
||||
onOpened: {
|
||||
|
||||
@@ -26,6 +26,7 @@ Popup {
|
||||
height: Math.min(content.implicitHeight + padding * 2, maxHeight)
|
||||
padding: Style.marginXL
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: false
|
||||
|
||||
// Center in parent
|
||||
|
||||
@@ -37,8 +37,8 @@ Popup {
|
||||
height: Math.min(800, contentColumn.implicitHeight + Style.margin2XL)
|
||||
padding: Style.marginXL
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: false
|
||||
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
|
||||
anchors.centerIn: parent
|
||||
|
||||
// Helper function to get color from cached scheme data
|
||||
|
||||
@@ -370,10 +370,6 @@ Item {
|
||||
NBox {
|
||||
id: device
|
||||
|
||||
HoverHandler {
|
||||
id: itemHover
|
||||
}
|
||||
|
||||
readonly property bool canConnect: BluetoothService.canConnect(modelData)
|
||||
readonly property bool canDisconnect: BluetoothService.canDisconnect(modelData)
|
||||
readonly property bool canPair: BluetoothService.canPair(modelData)
|
||||
@@ -488,7 +484,7 @@ Item {
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
visible: itemHover.hovered && modelData.connected && modelData.state !== BluetoothDeviceState.Disconnecting
|
||||
visible: modelData.connected && modelData.state !== BluetoothDeviceState.Disconnecting
|
||||
icon: "info"
|
||||
tooltipText: I18n.tr("common.info")
|
||||
baseSize: Style.baseWidgetSize * 0.75
|
||||
@@ -503,7 +499,7 @@ Item {
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
visible: itemHover.hovered && !root.showOnlyLists && (modelData.paired || modelData.trusted) && !modelData.connected && !isBusy && !modelData.blocked
|
||||
visible: !root.showOnlyLists && (modelData.paired || modelData.trusted) && !modelData.connected && !isBusy && !modelData.blocked
|
||||
icon: "trash"
|
||||
tooltipText: I18n.tr("common.unpair")
|
||||
baseSize: Style.baseWidgetSize * 0.75
|
||||
@@ -552,7 +548,7 @@ Item {
|
||||
visible: device.isExpanded
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: infoColumn.implicitHeight + Style.margin2S
|
||||
radius: Style.radiusS
|
||||
radius: Style.radiusXS
|
||||
color: Color.mSurfaceVariant
|
||||
border.width: Style.borderS
|
||||
border.color: Style.boxBorderColor
|
||||
|
||||
@@ -648,10 +648,6 @@ Item {
|
||||
NBox {
|
||||
id: networkItem
|
||||
|
||||
HoverHandler {
|
||||
id: itemHover
|
||||
}
|
||||
|
||||
readonly property bool isBusy: NetworkService.connectingTo === modelData.ssid || NetworkService.disconnectingFrom === modelData.ssid || NetworkService.forgettingNetwork === modelData.ssid
|
||||
readonly property bool isExpanded: root.infoSsid === modelData.ssid
|
||||
readonly property bool isEnterprise: NetworkService.isEnterprise(modelData.security)
|
||||
@@ -819,7 +815,7 @@ Item {
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
visible: itemHover.hovered && modelData.connected && NetworkService.disconnectingFrom !== modelData.ssid
|
||||
visible: modelData.connected && NetworkService.disconnectingFrom !== modelData.ssid
|
||||
icon: "info"
|
||||
tooltipText: I18n.tr("common.info")
|
||||
baseSize: Style.baseWidgetSize * 0.75
|
||||
@@ -838,7 +834,7 @@ Item {
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
visible: itemHover.hovered && !root.showOnlyLists && (modelData.existing || modelData.cached) && !modelData.connected && !networkItem.isBusy
|
||||
visible: !root.showOnlyLists && (modelData.existing || modelData.cached) && !modelData.connected && !networkItem.isBusy
|
||||
icon: "trash"
|
||||
tooltipText: I18n.tr("tooltips.forget-network")
|
||||
baseSize: Style.baseWidgetSize * 0.75
|
||||
@@ -883,7 +879,7 @@ Item {
|
||||
visible: networkItem.isExpanded
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: infoColumn.implicitHeight + Style.margin2S
|
||||
radius: Style.radiusS
|
||||
radius: Style.radiusXS
|
||||
color: Color.mSurfaceVariant
|
||||
border.width: Style.borderS
|
||||
border.color: Style.boxBorderColor
|
||||
|
||||
@@ -7,6 +7,7 @@ import qs.Widgets
|
||||
Popup {
|
||||
id: root
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: true
|
||||
anchors.centerIn: parent
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import qs.Widgets
|
||||
Popup {
|
||||
id: root
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: true
|
||||
anchors.centerIn: parent
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ Popup {
|
||||
height: content.implicitHeight + padding * 2
|
||||
padding: Style.marginXL
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
dim: false
|
||||
anchors.centerIn: parent
|
||||
|
||||
|
||||
@@ -257,10 +257,11 @@ PopupWindow {
|
||||
contentHeight = tooltipText.implicitHeight;
|
||||
}
|
||||
|
||||
const tipWidth = Math.ceil(Math.min(contentWidth + (padding * 2), maxWidth));
|
||||
const extraPad = isGridMode ? gridPaddingVertical : 0;
|
||||
const tipWidth = Math.ceil(Math.min(contentWidth + ((padding + extraPad) * 2), maxWidth));
|
||||
root.implicitWidth = tipWidth;
|
||||
|
||||
const tipHeight = Math.ceil(contentHeight + (padding * 2));
|
||||
const tipHeight = Math.ceil(contentHeight + ((padding + extraPad) * 2));
|
||||
root.implicitHeight = tipHeight;
|
||||
|
||||
// Get target's global position and convert to screen-relative
|
||||
@@ -498,10 +499,11 @@ PopupWindow {
|
||||
contentHeight = tooltipText.implicitHeight;
|
||||
}
|
||||
|
||||
const tipWidth = Math.ceil(Math.min(contentWidth + (padding * 2), maxWidth));
|
||||
const extraPad = isGridMode ? gridPaddingVertical : 0;
|
||||
const tipWidth = Math.ceil(Math.min(contentWidth + ((padding + extraPad) * 2), maxWidth));
|
||||
root.implicitWidth = tipWidth;
|
||||
|
||||
const tipHeight = Math.ceil(contentHeight + (padding * 2));
|
||||
const tipHeight = Math.ceil(contentHeight + ((padding + extraPad) * 2));
|
||||
root.implicitHeight = tipHeight;
|
||||
|
||||
// Reposition based on current direction (screen-relative)
|
||||
@@ -643,7 +645,7 @@ PopupWindow {
|
||||
color: Color.mSurface
|
||||
border.color: Color.mOutline
|
||||
border.width: Style.borderS
|
||||
radius: Style.radiusS
|
||||
radius: Math.min(Style.radiusS, Math.min(width, height) / 3)
|
||||
|
||||
// Only show content when we have content
|
||||
visible: root.text !== "" || root.isGridMode
|
||||
|
||||
@@ -249,15 +249,11 @@ Singleton {
|
||||
}
|
||||
|
||||
function syncWindows() {
|
||||
const ws = backend && backend.windows ? backend.windows : [];
|
||||
Logger.d("CompositorService", "syncWindows() from backend length:", ws.length);
|
||||
|
||||
windows.clear();
|
||||
const ws = backend.windows;
|
||||
for (var i = 0; i < ws.length; i++) {
|
||||
windows.append(ws[i]);
|
||||
}
|
||||
Logger.d("CompositorService", "syncWindows() model count:", windows.count);
|
||||
|
||||
// Emit signal to notify listeners that window list has been updated
|
||||
windowListChanged();
|
||||
}
|
||||
|
||||
@@ -236,7 +236,6 @@ Item {
|
||||
// Safe window update
|
||||
function safeUpdateWindows() {
|
||||
try {
|
||||
Logger.d("HyprlandService", "safeUpdateWindows() start");
|
||||
const windowsList = [];
|
||||
windowCache = {};
|
||||
|
||||
@@ -247,7 +246,6 @@ Item {
|
||||
}
|
||||
|
||||
const hlToplevels = Hyprland.toplevels.values;
|
||||
Logger.d("HyprlandService", "safeUpdateWindows() toplevels:", hlToplevels.length);
|
||||
let newFocusedIndex = -1;
|
||||
|
||||
// Get active workspaces to filter focus
|
||||
@@ -296,7 +294,6 @@ Item {
|
||||
}
|
||||
|
||||
windows = toSortedWindowList(windowsList);
|
||||
Logger.d("HyprlandService", "safeUpdateWindows() windows after sort:", windows.length);
|
||||
|
||||
if (newFocusedIndex !== focusedWindowIndex) {
|
||||
focusedWindowIndex = newFocusedIndex;
|
||||
|
||||
@@ -20,7 +20,7 @@ Singleton {
|
||||
readonly property bool hasInput: !!source
|
||||
readonly property list<PwNode> sinks: deviceNodes.sinks
|
||||
readonly property list<PwNode> sources: deviceNodes.sources
|
||||
|
||||
readonly property real maxVolume: Settings.data.audio.volumeOverdrive ? 1.5 : 1.0
|
||||
readonly property real epsilon: 0.005
|
||||
|
||||
// Fallback state sourced from wpctl when PipeWire node values go stale.
|
||||
@@ -30,11 +30,10 @@ Singleton {
|
||||
property bool wpctlOutputMuted: true
|
||||
|
||||
function clampOutputVolume(vol: real): real {
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
if (vol === undefined || isNaN(vol)) {
|
||||
return 0;
|
||||
}
|
||||
return Math.max(0, Math.min(maxVolume, vol));
|
||||
return Math.max(0, Math.min(root.maxVolume, vol));
|
||||
}
|
||||
|
||||
function refreshWpctlOutputState(): void {
|
||||
@@ -69,9 +68,9 @@ Singleton {
|
||||
return clampOutputVolume(wpctlOutputVolume);
|
||||
}
|
||||
|
||||
if (!sink?.audio)
|
||||
return 0;
|
||||
|
||||
if (!sink?.audio) {
|
||||
return 0;
|
||||
}
|
||||
return clampOutputVolume(sink.audio.volume);
|
||||
}
|
||||
readonly property bool muted: {
|
||||
@@ -83,13 +82,14 @@ Singleton {
|
||||
|
||||
// Input Volume - read directly from device
|
||||
readonly property real inputVolume: {
|
||||
if (!source?.audio)
|
||||
return 0;
|
||||
if (!source?.audio) {
|
||||
return 0;
|
||||
}
|
||||
const vol = source.audio.volume;
|
||||
if (vol === undefined || isNaN(vol))
|
||||
return 0;
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
return Math.max(0, Math.min(maxVolume, vol));
|
||||
if (vol === undefined || isNaN(vol)) {
|
||||
return 0;
|
||||
}
|
||||
return Math.max(0, Math.min(root.maxVolume, vol));
|
||||
}
|
||||
readonly property bool inputMuted: source?.audio?.muted ?? true
|
||||
|
||||
@@ -299,8 +299,9 @@ Singleton {
|
||||
}
|
||||
|
||||
function getAppKey(node): string {
|
||||
if (!node || !node.properties)
|
||||
if (!node || !node.properties) {
|
||||
return "";
|
||||
}
|
||||
var props = node.properties;
|
||||
var binary = props["application.process.binary"] || "";
|
||||
if (binary) {
|
||||
@@ -308,30 +309,38 @@ Singleton {
|
||||
return parts[parts.length - 1].toLowerCase();
|
||||
}
|
||||
var appName = props["application.name"] || "";
|
||||
if (appName)
|
||||
if (appName) {
|
||||
return appName.toLowerCase();
|
||||
}
|
||||
var appId = props["application.id"] || "";
|
||||
if (appId)
|
||||
if (appId) {
|
||||
return appId.toLowerCase();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
function setAppStreamVolume(appKey: string, volume: real): void {
|
||||
if (!appKey)
|
||||
return;
|
||||
if (!appKey) {
|
||||
return;
|
||||
}
|
||||
var o = appVolumeOverrides;
|
||||
if (!o[appKey])
|
||||
o[appKey] = {};
|
||||
if (!o[appKey]) {
|
||||
o[appKey] = {};
|
||||
}
|
||||
|
||||
o[appKey].volume = volume;
|
||||
appVolumeOverrides = o;
|
||||
}
|
||||
|
||||
function setAppStreamMuted(appKey: string, muted: bool): void {
|
||||
if (!appKey)
|
||||
return;
|
||||
if (!appKey) {
|
||||
return;
|
||||
}
|
||||
var o = appVolumeOverrides;
|
||||
if (!o[appKey])
|
||||
o[appKey] = {};
|
||||
if (!o[appKey]) {
|
||||
o[appKey] = {};
|
||||
}
|
||||
o[appKey].muted = muted;
|
||||
appVolumeOverrides = o;
|
||||
}
|
||||
@@ -342,19 +351,24 @@ Singleton {
|
||||
|
||||
function _applyAppOverrides(): void {
|
||||
var streams = root.appStreams;
|
||||
if (!streams)
|
||||
return;
|
||||
if (!streams) {
|
||||
return;
|
||||
}
|
||||
|
||||
var currentIds = {};
|
||||
_isApplyingAppOverride = true;
|
||||
for (var i = 0; i < streams.length; i++) {
|
||||
var s = streams[i];
|
||||
if (!s)
|
||||
continue;
|
||||
if (!s) {
|
||||
continue;
|
||||
}
|
||||
|
||||
currentIds[s.id] = true;
|
||||
var key = getAppKey(s);
|
||||
var ov = key ? appVolumeOverrides[key] : null;
|
||||
if (!ov || !s.audio)
|
||||
continue;
|
||||
if (!ov || !s.audio) {
|
||||
continue;
|
||||
}
|
||||
if (ov.volume !== undefined && Math.abs(s.audio.volume - ov.volume) > root.epsilon) {
|
||||
s.audio.volume = ov.volume;
|
||||
}
|
||||
@@ -421,9 +435,6 @@ Singleton {
|
||||
root.refreshWpctlOutputState();
|
||||
}
|
||||
}
|
||||
|
||||
stdout: StdioCollector {}
|
||||
stderr: StdioCollector {}
|
||||
}
|
||||
|
||||
Process {
|
||||
@@ -437,7 +448,6 @@ Singleton {
|
||||
}
|
||||
|
||||
stdout: StdioCollector {}
|
||||
stderr: StdioCollector {}
|
||||
}
|
||||
|
||||
Process {
|
||||
@@ -455,9 +465,6 @@ Singleton {
|
||||
}
|
||||
root.refreshWpctlOutputState();
|
||||
}
|
||||
|
||||
stdout: StdioCollector {}
|
||||
stderr: StdioCollector {}
|
||||
}
|
||||
|
||||
Process {
|
||||
@@ -467,9 +474,6 @@ Singleton {
|
||||
onExited: function (_code) {
|
||||
root.refreshWpctlOutputState();
|
||||
}
|
||||
|
||||
stdout: StdioCollector {}
|
||||
stderr: StdioCollector {}
|
||||
}
|
||||
|
||||
// Watch output device changes for clamping
|
||||
@@ -495,14 +499,12 @@ Singleton {
|
||||
return;
|
||||
}
|
||||
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
|
||||
// If volume exceeds max, clamp it (but only if we didn't just set it)
|
||||
if (vol > maxVolume) {
|
||||
if (vol > root.maxVolume) {
|
||||
root.isSettingOutputVolume = true;
|
||||
Qt.callLater(() => {
|
||||
if (root.sink?.audio && root.sink.audio.volume > maxVolume) {
|
||||
root.sink.audio.volume = maxVolume;
|
||||
if (root.sink?.audio && root.sink.audio.volume > root.maxVolume) {
|
||||
root.sink.audio.volume = root.maxVolume;
|
||||
}
|
||||
root.isSettingOutputVolume = false;
|
||||
});
|
||||
@@ -535,14 +537,12 @@ Singleton {
|
||||
return;
|
||||
}
|
||||
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
|
||||
// If volume exceeds max, clamp it (but only if we didn't just set it)
|
||||
if (vol > maxVolume) {
|
||||
if (vol > root.maxVolume) {
|
||||
root.isSettingInputVolume = true;
|
||||
Qt.callLater(() => {
|
||||
if (root.source?.audio && root.source.audio.volume > maxVolume) {
|
||||
root.source.audio.volume = maxVolume;
|
||||
if (root.source?.audio && root.source.audio.volume > root.maxVolume) {
|
||||
root.source.audio.volume = root.maxVolume;
|
||||
}
|
||||
root.isSettingInputVolume = false;
|
||||
});
|
||||
@@ -555,11 +555,10 @@ Singleton {
|
||||
if (!Pipewire.ready || (!sink?.audio && !wpctlAvailable)) {
|
||||
return;
|
||||
}
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
if (volume >= maxVolume) {
|
||||
if (volume >= root.maxVolume) {
|
||||
return;
|
||||
}
|
||||
setVolume(Math.min(maxVolume, volume + stepVolume));
|
||||
setVolume(Math.min(root.maxVolume, volume + stepVolume));
|
||||
}
|
||||
|
||||
function decreaseVolume() {
|
||||
@@ -642,11 +641,11 @@ Singleton {
|
||||
}
|
||||
|
||||
function getOutputIcon() {
|
||||
if (muted)
|
||||
if (muted) {
|
||||
return "volume-mute";
|
||||
}
|
||||
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
const clampedVolume = Math.max(0, Math.min(volume, maxVolume));
|
||||
const clampedVolume = Math.max(0, Math.min(volume, root.maxVolume));
|
||||
|
||||
// Show volume-x icon when volume is effectively 0% (within rounding threshold)
|
||||
if (clampedVolume < root.epsilon) {
|
||||
@@ -663,11 +662,10 @@ Singleton {
|
||||
if (!Pipewire.ready || !source?.audio) {
|
||||
return;
|
||||
}
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
if (inputVolume >= maxVolume) {
|
||||
if (inputVolume >= root.maxVolume) {
|
||||
return;
|
||||
}
|
||||
setInputVolume(Math.min(maxVolume, inputVolume + stepVolume));
|
||||
setInputVolume(Math.min(root.maxVolume, inputVolume + stepVolume));
|
||||
}
|
||||
|
||||
function decreaseInputVolume() {
|
||||
@@ -683,8 +681,7 @@ Singleton {
|
||||
return;
|
||||
}
|
||||
|
||||
const maxVolume = Settings.data.audio.volumeOverdrive ? 1.5 : 1.0;
|
||||
const clampedVolume = Math.max(0, Math.min(maxVolume, newVolume));
|
||||
const clampedVolume = Math.max(0, Math.min(root.maxVolume, newVolume));
|
||||
const delta = Math.abs(clampedVolume - source.audio.volume);
|
||||
if (delta < root.epsilon) {
|
||||
return;
|
||||
|
||||
+27
-11
@@ -196,20 +196,42 @@ Singleton {
|
||||
// Track last workspace ID to detect actual workspace changes
|
||||
property var lastWorkspaceId: null
|
||||
|
||||
// Workspace switch handler - directly show bar on the focused workspace screen
|
||||
// Workspace switch handler - show bar on the focused workspace screen
|
||||
// Deferred via Timer to avoid re-entrant incubation: setScreenHidden emits
|
||||
// barAutoHideStateChanged which triggers BarContentWindow to load bar content.
|
||||
// Loading Bar+widgets synchronously during workspaceChanged nests QQmlIncubatorPrivate
|
||||
// inside the signal handler, corrupting the V4 heap (SIGSEGV in QV4::Object::insertMember).
|
||||
Timer {
|
||||
id: workspaceShowBarTimer
|
||||
interval: 0
|
||||
property string pendingScreenName: ""
|
||||
onTriggered: {
|
||||
if (pendingScreenName === "")
|
||||
return;
|
||||
var screenName = pendingScreenName;
|
||||
pendingScreenName = "";
|
||||
setScreenHidden(screenName, false);
|
||||
if (!root.isBarHovered(screenName)) {
|
||||
barHoverStateChanged(screenName, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: CompositorService
|
||||
function onWorkspaceChanged() {
|
||||
if (!Settings.data.bar.showOnWorkspaceSwitch)
|
||||
return;
|
||||
if (Settings.data.bar.displayMode !== "auto_hide")
|
||||
return;
|
||||
|
||||
var ws = CompositorService.getCurrentWorkspace();
|
||||
if (!ws || !ws.output) {
|
||||
return;
|
||||
}
|
||||
|
||||
var screenName = ws.output || "";
|
||||
if (Settings.getBarDisplayModeForScreen(screenName) !== "auto_hide")
|
||||
return;
|
||||
|
||||
// Only trigger if workspace actually changed
|
||||
var currentWsId = ws.id;
|
||||
if (currentWsId === root.lastWorkspaceId) {
|
||||
@@ -217,16 +239,10 @@ Singleton {
|
||||
}
|
||||
root.lastWorkspaceId = currentWsId;
|
||||
|
||||
var screenName = ws.output || "";
|
||||
Logger.d("BarService", "Workspace switched to:", currentWsId, "on screen:", screenName);
|
||||
|
||||
// Show bar immediately
|
||||
setScreenHidden(screenName, false);
|
||||
|
||||
// Only trigger hideTimer if not already hovered (e.g., mouse on trigger zone)
|
||||
if (!root.isBarHovered(screenName)) {
|
||||
barHoverStateChanged(screenName, false);
|
||||
}
|
||||
workspaceShowBarTimer.pendingScreenName = screenName;
|
||||
workspaceShowBarTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ ColumnLayout {
|
||||
font.pointSize: root.fontSize * Style.uiScaleRatio
|
||||
font.weight: root.fontWeight
|
||||
|
||||
onEditingFinished: root.editingFinished()
|
||||
onTextEdited: root.editingFinished()
|
||||
onAccepted: root.accepted()
|
||||
|
||||
// Override mouse handling to prevent propagation
|
||||
|
||||
+1866
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,329 @@
|
||||
PID: 3846 (quickshell)
|
||||
UID: 1000 (shelomoh)
|
||||
GID: 1000 (shelomoh)
|
||||
Signal: 11 (SEGV)
|
||||
Timestamp: Tue 2026-03-17 09:34:27 EET (5min ago)
|
||||
Command Line: build/src/quickshell -p ../noctalia-shell
|
||||
Executable: /home/shelomoh/Downloads/noctalia-qs/build/src/quickshell
|
||||
Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-ghostty-surface-transient-3507.scope
|
||||
Unit: user@1000.service
|
||||
User Unit: app-ghostty-surface-transient-3507.scope
|
||||
Slice: user-1000.slice
|
||||
Owner UID: 1000 (shelomoh)
|
||||
Boot ID: d5c40a483efb425188b8fda02e442f92
|
||||
Machine ID: e1f87fbe60e9410db9c53ecbd7ab103a
|
||||
Hostname: shelomoh-laptop
|
||||
Storage: /var/lib/systemd/coredump/core.quickshell.1000.d5c40a483efb425188b8fda02e442f92.3846.1773732867000000.zst (present)
|
||||
Size on Disk: 33.6M
|
||||
Message: Process 3846 (quickshell) of user 1000 dumped core.
|
||||
|
||||
Stack trace of thread 3846:
|
||||
#0 0x00007f89515c1f53 _ZN3QV46Object12insertMemberEPNS_14StringOrSymbolEPKNS_8PropertyENS_18PropertyAttributesE (libQt6Qml.so.6 + 0x1c1f53)
|
||||
#1 0x00007f895153f908 n/a (libQt6Qml.so.6 + 0x13f908)
|
||||
#2 0x00007f89515c4c61 _ZN3QV46Object11internalPutENS_11PropertyKeyERKNS_5ValueEPS2_ (libQt6Qml.so.6 + 0x1c4c61)
|
||||
#3 0x00007f89515c4aa0 _ZN3QV46Object11internalPutENS_11PropertyKeyERKNS_5ValueEPS2_ (libQt6Qml.so.6 + 0x1c4aa0)
|
||||
#4 0x00007f895160b398 n/a (libQt6Qml.so.6 + 0x20b398)
|
||||
#5 0x00007f895160b4a1 _ZN3QV47Runtime12StoreElement4callEPNS_15ExecutionEngineERKNS_5ValueES6_S6_ (libQt6Qml.so.6 + 0x20b4a1)
|
||||
#6 0x00007f8936d2244d n/a (n/a + 0x0)
|
||||
#7 0x00007f895164e266 n/a (libQt6Qml.so.6 + 0x24e266)
|
||||
#8 0x00007f89515a3eb6 n/a (libQt6Qml.so.6 + 0x1a3eb6)
|
||||
#9 0x00007f895160ea1d _ZN3QV47Runtime18CallPropertyLookup4callEPNS_15ExecutionEngineERKNS_5ValueEjPS4_i (libQt6Qml.so.6 + 0x20ea1d)
|
||||
#10 0x00007f8936d23e27 n/a (n/a + 0x0)
|
||||
#11 0x00007f895164e266 n/a (libQt6Qml.so.6 + 0x24e266)
|
||||
#12 0x00007f8951596300 n/a (libQt6Qml.so.6 + 0x196300)
|
||||
#13 0x00007f895159c909 _ZN3QV48Function4callEP7QObjectPPvPK9QMetaTypeiPNS_16ExecutionContextE (libQt6Qml.so.6 + 0x19c909)
|
||||
#14 0x00007f89516f32b0 _ZN24QQmlJavaScriptExpression8evaluateEPPvPK9QMetaTypei (libQt6Qml.so.6 + 0x2f32b0)
|
||||
#15 0x00007f895168a2cb _ZN25QQmlBoundSignalExpression8evaluateEPPv (libQt6Qml.so.6 + 0x28a2cb)
|
||||
#16 0x00007f895168f80d n/a (libQt6Qml.so.6 + 0x28f80d)
|
||||
#17 0x00007f895171cf58 _ZN12QQmlNotifier10emitNotifyEP20QQmlNotifierEndpointPPv (libQt6Qml.so.6 + 0x31cf58)
|
||||
#18 0x00007f8950bd8b82 n/a (libQt6Core.so.6 + 0x1d8b82)
|
||||
#19 0x00007f89516f1c36 _ZN20QQmlIncubatorPrivate8incubateER26QQmlInstantiationInterrupt (libQt6Qml.so.6 + 0x2f1c36)
|
||||
#20 0x00007f89516f1e17 _ZN20QQmlIncubatorPrivate8incubateER26QQmlInstantiationInterrupt (libQt6Qml.so.6 + 0x2f1e17)
|
||||
#21 0x00007f89516f2974 _ZN24QQmlIncubationController11incubateForEi (libQt6Qml.so.6 + 0x2f2974)
|
||||
#22 0x000055faff9d58ff _ZN22QsIncubationController8incubateEv (/home/shelomoh/Downloads/noctalia-qs/build/src/quickshell + 0x76f8ff)
|
||||
#23 0x00007f8950bc6474 _ZN7QObject5eventEP6QEvent (libQt6Core.so.6 + 0x1c6474)
|
||||
#24 0x00007f8950b6bf48 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt6Core.so.6 + 0x16bf48)
|
||||
#25 0x00007f8950b6c320 _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData (libQt6Core.so.6 + 0x16c320)
|
||||
#26 0x00007f8950e51e78 n/a (libQt6Core.so.6 + 0x451e78)
|
||||
#27 0x00007f895361df4d n/a (libglib-2.0.so.0 + 0x5ef4d)
|
||||
#28 0x00007f895361f617 n/a (libglib-2.0.so.0 + 0x60617)
|
||||
#29 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#30 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#31 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#32 0x00007f8950b709f1 _ZN16QCoreApplication4execEv (libQt6Core.so.6 + 0x1709f1)
|
||||
#33 0x000055faff759246 _ZN2qs6launch6launchERKNS0_10LaunchArgsEPPcP16QCoreApplication (/home/shelomoh/Downloads/noctalia-qs/build/src/quickshell + 0x4f3246)
|
||||
#34 0x000055faff7537b9 launchFromCommand (/home/shelomoh/Downloads/noctalia-qs/build/src/quickshell + 0x4ed7b9)
|
||||
#35 0x000055faff745007 _ZN2qs6launch4mainEiPPc (/home/shelomoh/Downloads/noctalia-qs/build/src/quickshell + 0x4df007)
|
||||
#36 0x00007f89504366c1 n/a (libc.so.6 + 0x276c1)
|
||||
#37 0x00007f89504367f9 __libc_start_main (libc.so.6 + 0x277f9)
|
||||
#38 0x000055faff7472c5 _start (/home/shelomoh/Downloads/noctalia-qs/build/src/quickshell + 0x4e12c5)
|
||||
|
||||
Stack trace of thread 3847:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#7 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#8 0x00007f8950c9277e _ZN7QThread4execEv (libQt6Core.so.6 + 0x29277e)
|
||||
#9 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#10 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#11 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3848:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#7 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#8 0x00007f8950c9277e _ZN7QThread4execEv (libQt6Core.so.6 + 0x29277e)
|
||||
#9 0x00007f895257607e n/a (libQt6DBus.so.6 + 0x3707e)
|
||||
#10 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#11 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#12 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3849:
|
||||
#0 0x00007f895052706d syscall (libc.so.6 + 0x11806d)
|
||||
#1 0x00007f895364ba2e g_cond_wait (libglib-2.0.so.0 + 0x8ca2e)
|
||||
#2 0x00007f89535e522d n/a (libglib-2.0.so.0 + 0x2622d)
|
||||
#3 0x00007f89535e529d g_async_queue_pop (libglib-2.0.so.0 + 0x2629d)
|
||||
#4 0x00007f894c4af51c n/a (libpangoft2-1.0.so.0 + 0xc51c)
|
||||
#5 0x00007f895365513c n/a (libglib-2.0.so.0 + 0x9613c)
|
||||
#6 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#7 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3850:
|
||||
#0 0x00007f895052706d syscall (libc.so.6 + 0x11806d)
|
||||
#1 0x00007f895364ba2e g_cond_wait (libglib-2.0.so.0 + 0x8ca2e)
|
||||
#2 0x00007f89535e522d n/a (libglib-2.0.so.0 + 0x2622d)
|
||||
#3 0x00007f8953655607 n/a (libglib-2.0.so.0 + 0x96607)
|
||||
#4 0x00007f895365513c n/a (libglib-2.0.so.0 + 0x9613c)
|
||||
#5 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#6 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3851:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f895361f872 n/a (libglib-2.0.so.0 + 0x60872)
|
||||
#7 0x00007f895365513c n/a (libglib-2.0.so.0 + 0x9613c)
|
||||
#8 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#9 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3852:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f9d7 g_main_loop_run (libglib-2.0.so.0 + 0x609d7)
|
||||
#6 0x00007f895388f0c4 n/a (libgio-2.0.so.0 + 0x1190c4)
|
||||
#7 0x00007f895365513c n/a (libglib-2.0.so.0 + 0x9613c)
|
||||
#8 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#9 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3856:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3867:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3897:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3889:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f8950529595 epoll_wait (libc.so.6 + 0x11a595)
|
||||
#4 0x00007f8938027d0a n/a (libspa-support.so + 0x1bd0a)
|
||||
#5 0x00007f893801263c n/a (libspa-support.so + 0x663c)
|
||||
#6 0x00007f8953a12401 n/a (libpipewire-0.3.so.0 + 0x8b401)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3854:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051bdae __poll (libc.so.6 + 0x10cdae)
|
||||
#4 0x00007f8953af3cf5 n/a (libQt6WaylandClient.so.6 + 0x6acf5)
|
||||
#5 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#6 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#7 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3898:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3853:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051bdae __poll (libc.so.6 + 0x10cdae)
|
||||
#4 0x00007f8953af3cf5 n/a (libQt6WaylandClient.so.6 + 0x6acf5)
|
||||
#5 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#6 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#7 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3900:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3855:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#7 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#8 0x00007f8950c9277e _ZN7QThread4execEv (libQt6Core.so.6 + 0x29277e)
|
||||
#9 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#10 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#11 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3899:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 3938:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 331554:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 4065:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#7 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#8 0x00007f8950c9277e _ZN7QThread4execEv (libQt6Core.so.6 + 0x29277e)
|
||||
#9 0x00007f89529a2fc2 n/a (libQt6Quick.so.6 + 0x3a2fc2)
|
||||
#10 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#11 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#12 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 331555:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 331556:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 4119:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a23e4 n/a (libc.so.6 + 0x933e4)
|
||||
#3 0x00007f895051c2f6 ppoll (libc.so.6 + 0x10d2f6)
|
||||
#4 0x00007f895361f744 n/a (libglib-2.0.so.0 + 0x60744)
|
||||
#5 0x00007f895361f825 g_main_context_iteration (libglib-2.0.so.0 + 0x60825)
|
||||
#6 0x00007f8950e4fcb2 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x44fcb2)
|
||||
#7 0x00007f8950b76cf6 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x176cf6)
|
||||
#8 0x00007f8950c9277e _ZN7QThread4execEv (libQt6Core.so.6 + 0x29277e)
|
||||
#9 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#10 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#11 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
|
||||
Stack trace of thread 4533:
|
||||
#0 0x00007f89504adf32 n/a (libc.so.6 + 0x9ef32)
|
||||
#1 0x00007f89504a239c n/a (libc.so.6 + 0x9339c)
|
||||
#2 0x00007f89504a268c n/a (libc.so.6 + 0x9368c)
|
||||
#3 0x00007f89504a5068 pthread_cond_timedwait (libc.so.6 + 0x96068)
|
||||
#4 0x00007f8950d362a5 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt6Core.so.6 + 0x3362a5)
|
||||
#5 0x00007f8950c91189 n/a (libQt6Core.so.6 + 0x291189)
|
||||
#6 0x00007f8950d31c7a n/a (libQt6Core.so.6 + 0x331c7a)
|
||||
#7 0x00007f89504a597a n/a (libc.so.6 + 0x9697a)
|
||||
#8 0x00007f89505292bc n/a (libc.so.6 + 0x11a2bc)
|
||||
ELF object binary architecture: AMD x86-64
|
||||
|
||||
Failed to invoke gdb: No such file or directory
|
||||
Reference in New Issue
Block a user