Attempt to fix a GNOME 48 issue with the enable_unredirect call, v2.0.8

This commit is contained in:
wheaney 2025-03-08 15:25:17 -08:00
parent 427dbef704
commit 6f80299eb0
4 changed files with 46 additions and 14 deletions

View File

@ -1 +1 @@
2.0.7
2.0.8

View File

@ -117,7 +117,6 @@ export class CursorManager {
this._updateMouseSprite();
this._cursorTracker.connectObject('cursor-changed', this._updateMouseSprite.bind(this), this);
Meta.Compositor?.disable_unredirect?.() ?? Meta.disable_unredirect_for_display(global.display);
// cap the refresh rate for performance reasons
const interval = 1000.0 / Math.min(this._refreshRate, 60);
@ -141,7 +140,6 @@ export class CursorManager {
if (this._cursorTracker) this._cursorTracker.disconnectObject(this);
if (this._mouseSprite?.content?.texture) this._mouseSprite.content.texture = null;
Meta.Compositor?.enable_unredirect?.() ?? Meta.enable_unredirect_for_display(global.display);
if (!this._systemCursorShown) this._showSystemCursor();
}

View File

@ -295,7 +295,11 @@ export default class BreezyDesktopExtension extends Extension {
this._virtual_displays_actor.connect('notify::focused-monitor-details', this._update_display_distance.bind(this));
this._follow_threshold_connection = this.settings.connect('changed::follow-threshold', this._update_follow_threshold.bind(this));
Meta.Compositor?.disable_unredirect?.() ?? Meta.disable_unredirect_for_display(global.display);
if (Meta.Compositor?.disable_unredirect) {
Meta.Compositor.disable_unredirect();
} else {
Meta.disable_unredirect_for_display(global.display);
}
this._add_settings_keybinding('toggle-xr-effect-shortcut', this._toggle_xr_effect.bind(this));
this._add_settings_keybinding('recenter-display-shortcut', this._recenter_display.bind(this));
@ -538,7 +542,12 @@ export default class BreezyDesktopExtension extends Extension {
Main.wm.removeKeybinding('recenter-display-shortcut');
Main.wm.removeKeybinding('toggle-display-distance-shortcut');
Main.wm.removeKeybinding('toggle-follow-shortcut');
Meta.Compositor?.enable_unredirect?.() ?? Meta.enable_unredirect_for_display(global.display);
if (Meta.Compositor?.enable_unredirect) {
Meta.Compositor.enable_unredirect();
} else {
Meta.enable_unredirect_for_display(global.display);
}
for (let settings_key of this._effect_settings_bindings) {
Gio.Settings.unbind(this.settings, settings_key);

View File

@ -586,16 +586,41 @@ export const VirtualDisplaysActor = GObject.registerClass({
try {
const calibratingBanner = GdkPixbuf.Pixbuf.new_from_file(`${Globals.extension_dir}/textures/calibrating.png`);
const calibratingImage = new Clutter.Image();
calibratingImage.set_data(calibratingBanner.get_pixels(), Cogl.PixelFormat.RGB_888,
calibratingBanner.width, calibratingBanner.height, calibratingBanner.rowstride);
this.bannerContent = Clutter.TextureContent.new_from_texture(calibratingImage.get_texture(), null);
const customBanner = GdkPixbuf.Pixbuf.new_from_file(`${Globals.extension_dir}/textures/custom_banner.png`);
const customBannerImage = new Clutter.Image();
customBannerImage.set_data(customBanner.get_pixels(), Cogl.PixelFormat.RGB_888,
customBanner.width, customBanner.height, customBanner.rowstride);
this.customBannerContent = Clutter.TextureContent.new_from_texture(customBannerImage.get_texture(), null);
if (Clutter.Image) {
const calibratingImage = new Clutter.Image();
calibratingImage.set_data(calibratingBanner.get_pixels(), Cogl.PixelFormat.RGB_888,
calibratingBanner.width, calibratingBanner.height, calibratingBanner.rowstride);
this.bannerContent = Clutter.TextureContent.new_from_texture(calibratingImage.get_texture(), null);
const customBannerImage = new Clutter.Image();
customBannerImage.set_data(customBanner.get_pixels(), Cogl.PixelFormat.RGB_888,
customBanner.width, customBanner.height, customBanner.rowstride);
this.customBannerContent = Clutter.TextureContent.new_from_texture(customBannerImage.get_texture(), null);
} else {
const backend = global.stage.get_context?.().get_backend() ?? Clutter.get_default_backend();
const coglContext = backend.get_cogl_context();
this.bannerContent = St.ImageContent.new_with_preferred_size(calibratingBanner.width, calibratingBanner.height);
this.bannerContent.set_bytes(
coglContext,
calibratingBanner.get_pixels(),
Cogl.PixelFormat.RGB_888,
calibratingBanner.width,
calibratingBanner.height,
calibratingBanner.rowstride
)
this.customBannerContent = St.ImageContent.new_with_preferred_size(customBanner.width, customBanner.height);
this.customBannerContent.set_bytes(
coglContext,
customBanner.get_pixels(),
Cogl.PixelFormat.RGB_888,
customBanner.width,
customBanner.height,
customBanner.rowstride
);
}
this.bannerActor = new Clutter.Actor({
width: calibratingBanner.width,