gnome-shell/js/ui
Jonas Ådahl 5c33fe4a0a appDisplay: Don't start animation from the 'paint' signal
Starting the animation from the actor 'paint' signal has various
unwanted consequences, such as sometimes trigger a
clutter_actor_queue_relayout() during the paint phase. One unwanted
consequence was that an offscreen actor effect was disabled during
painting, meaning the effect would begin being active, but later during
the post-paint processing being disabled. The caused said effect to push
an offscreen framebuffer to the paint context, but then just destroy it
instead of popping it. When this happened, we'd end up trying to operate
on a framebuffer that may had been finalized, or not, depending on the
garbage collector. Sometimes, for some users, this caused a segmentation
fault when trying to pop a matrix from the framebuffer matrix stack.

Deal with this more properly, by using the 'view-loaded' signal to wait
with animation until the view is loaded, as well as using MetaLater to
schedule the start of the animation.

For when a view was signalled to be ready, we're in a state where we can
start animation before the next frame as the layout is ready, but when
not, we have to add back the "hack" where we must wait for one frame for
the target icon positions to be up to date. Do this by adding a
MetaLater IDLE callback that starts the animation *after* the next
frame. This also needs the old 'opacity = 0' work around to not show an
incorrect first frame.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2418

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1154
2020-03-30 16:24:31 +00:00
..
components js: Do not set entries' ClutterText:editable property 2020-03-29 22:12:57 +02:00
status volume: Cancel before checking state 2020-03-28 19:03:12 +01:00
accessDialog.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
altTab.js altTab: Don't fade out thumbnails on destroy 2020-02-26 22:46:51 +00:00
animation.js animation: Scale animation actor for HiDPI 2020-01-30 14:28:45 +00:00
appDisplay.js appDisplay: Don't start animation from the 'paint' signal 2020-03-30 16:24:31 +00:00
appFavorites.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
audioDeviceSelection.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
background.js background: Remove noise texture 2020-02-10 22:30:52 +00:00
backgroundMenu.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
barLevel.js cleanup: Require "dangling" commas 2019-11-11 19:25:14 +00:00
boxpointer.js Revert "js/ui: Use Clutter.OffscreenRedirect.ON_IDLE" 2020-02-26 11:54:54 +08:00
calendar.js calendar: Improve the accessibility of the "Do Not Disturb" switch 2020-03-29 11:07:32 +11:00
checkBox.js checkbox: Improve accessibility of check boxes for Orca users 2020-03-29 12:56:33 +00:00
closeDialog.js closeDialog: Remove transitions before resetting dialog 2020-03-23 15:27:47 +00:00
ctrlAltTab.js cleanup: Require "dangling" commas 2019-11-11 19:25:14 +00:00
dash.js Revert "js/ui: Use Clutter.OffscreenRedirect.ON_IDLE" 2020-02-26 11:54:54 +08:00
dateMenu.js dateMenu: Only use nearest city when appropriate 2020-03-28 16:24:03 +00:00
dialog.js closeDialog: Make dialog inactive while fading out 2020-02-21 08:11:57 +00:00
dnd.js dnd: Make DND translation-property-aware 2020-02-07 14:43:56 +00:00
edgeDragAction.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
endSessionDialog.js Fix prompt for updates on end session dialog 2020-03-26 14:45:05 +00:00
environment.js environment: Hook up touch_file to GFile prototype 2020-03-25 20:03:01 +00:00
extensionDownloader.js extensionSystem: Require Extensions app for updates 2020-03-27 13:28:41 +00:00
extensionSystem.js extensionSystem: Require Extensions app for updates 2020-03-27 13:28:41 +00:00
focusCaretTracker.js cleanup: Prefer template strings 2019-07-05 11:32:31 +00:00
grabHelper.js grabHelper: Add (promised-based) grabAsync() 2019-12-20 15:41:32 +01:00
ibusCandidatePopup.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
iconGrid.js iconGrid: Create icon clones in a separate loop 2020-02-19 15:39:21 +00:00
inhibitShortcutsDialog.js inhibitShortcutsDialog: Adapt to new dialog design 2020-01-27 23:40:04 +01:00
kbdA11yDialog.js ui: Use ClutterSeat for keyboard/pointer a11y 2020-01-30 17:49:08 +00:00
keyboard.js keyboard: Hide keyboardBox after destroying the keyboard 2020-03-28 20:45:32 +00:00
layout.js layout: Use translation_y of 0 to hide keyboard 2020-03-28 20:45:32 +00:00
lightbox.js lightbox: Change vignette brightness to 0.5 2020-01-19 18:01:57 +01:00
locatePointer.js locatePointer: Bind ripples creation to settings 2019-09-09 19:28:18 +00:00
lookingGlass.js js: Add missing chain-ups in vfuncs 2020-03-27 10:39:58 +01:00
magnifier.js magnifier: Use inhibit-unfocus API to keep wayland focus while hidden 2020-02-24 10:31:08 +00:00
magnifierDBus.js cleanup: Use JSDoc for documentation comments 2019-11-11 19:25:14 +00:00
main.js main: Do not warn about missing GDM on each login 2020-03-25 20:03:01 +00:00
messageList.js js: Add missing chain-ups in vfuncs 2020-03-27 10:39:58 +01:00
messageTray.js messageTray: Don't create notification policy on demand 2020-03-26 18:52:10 +00:00
modalDialog.js switcherPopup: Dismiss when a system modal dialog opens 2019-12-06 19:55:39 +01:00
mpris.js mpris: Disallow media section on login screen 2020-02-26 17:45:33 +00:00
notificationDaemon.js messageTray: Don't create notification policy on demand 2020-03-26 18:52:10 +00:00
osdMonitorLabeler.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
osdWindow.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
overview.js Revert "js/ui: Use Clutter.OffscreenRedirect.ON_IDLE" 2020-02-26 11:54:54 +08:00
overviewControls.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
padOsd.js padOsd: Add parameter type to keybinding-edited signal 2020-03-20 13:32:56 +01:00
pageIndicators.js pageIndicators: Redesign and add position-based animation 2019-11-23 03:01:51 +05:00
panel.js js: Add missing chain-ups in vfuncs 2020-03-27 10:39:58 +01:00
panelMenu.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
pointerA11yTimeout.js ui: Use ClutterSeat for keyboard/pointer a11y 2020-01-30 17:49:08 +00:00
pointerWatcher.js cleanup: Stop using Mainloop module 2019-09-12 19:09:24 +02:00
popupMenu.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
remoteSearch.js remoteSearch: Fix typos in log messages 2020-03-23 13:40:39 -03:00
ripples.js cleanup: Require "dangling" commas 2019-11-11 19:25:14 +00:00
runDialog.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
screencast.js cleanup: Use destructuring for imports from GI 2019-02-09 07:39:20 +01:00
screenShield.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
screenshot.js shell/screenshot: Throw error on failure 2020-03-24 11:29:53 +00:00
scripting.js perf-tool: Spawn perf-tool-helper from gnome-shell 2020-01-27 13:43:06 +00:00
search.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
sessionMode.js main: Get the theme resource name from sessionMode 2020-03-06 19:09:25 +00:00
shellDBus.js shellDBus: Return error from ReloadExtension 2020-03-28 22:14:44 +00:00
shellEntry.js shellEntry: Restore natural-height-set instead of forcing it 2020-02-22 16:58:01 +00:00
shellMountOperation.js js: Do not set entries' ClutterText:editable property 2020-03-29 22:12:57 +02:00
slider.js js: Add missing chain-ups in vfuncs 2020-03-27 10:39:58 +01:00
swipeTracker.js js/ui: Subscribe touchpad gesture handlers to only touchpad events 2020-02-29 13:39:17 +00:00
switcherPopup.js switcherPopup: Use correct scroll-direction property 2020-02-26 22:46:51 +00:00
switchMonitor.js switchMonitor: Center align switcher icon's label 2020-01-02 13:03:08 +05:30
tweener.js tweener: Use new adjustAnimationTime() helper 2019-08-06 20:50:43 +02:00
unlockDialog.js unlockDialog: Only cancel AuthPrompt if it exists 2020-03-27 23:40:08 +00:00
userWidget.js userWidget: Always set actor size inside update() 2020-02-18 22:10:00 +00:00
viewSelector.js js/ui: Subscribe touchpad gesture handlers to only touchpad events 2020-02-29 13:39:17 +00:00
windowAttentionHandler.js messageTray: Don't create notification policy on demand 2020-03-26 18:52:10 +00:00
windowManager.js windowManager: Do not shutdown ibus/xsettings on X11 compositor restart 2020-03-11 11:31:45 +00:00
windowMenu.js cleanup: Avoid unnecessary parentheses in arrow functions 2019-09-15 16:02:45 +02:00
workspace.js js: Add missing chain-ups in vfuncs 2020-03-27 10:39:58 +01:00
workspacesView.js workspacesView: Disable swipe tracker during window dragging 2020-01-28 22:08:48 +00:00
workspaceSwitcherPopup.js cleanup: Require "dangling" commas 2019-11-11 19:25:14 +00:00
workspaceThumbnail.js workspaceThumbnail: Sync indicator with WorkspacesDisplay 2020-01-08 23:07:08 +01:00
xdndHandler.js cleanup: Require "dangling" commas 2019-11-11 19:25:14 +00:00