From 835455939f4955baf88e2343c50b1df0f6e8cf5e Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Wed, 27 Jun 2018 01:36:02 +0100 Subject: [PATCH 1/5] Avoid potential assert in SM saving Summary: Sesison Manager stores all relevant clients. There's an assert if the window type is outside of the standard client window types. It assumed that all windows outside this would be Unmanaged windows rather than Client objects, something probably true but not something enforced. This particular crash was probably cased as we have a new window type in Plasma OSD, which does not set BypassWindowManager in Qt window flags. BUG: 395712 Test Plan: Set to restore session Logged out and back in Saw some windows Set to restore manually saved session Hit save No crash Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13715 --- sm.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sm.cpp b/sm.cpp index cd6f055f56..da1c7e0784 100644 --- a/sm.cpp +++ b/sm.cpp @@ -108,6 +108,11 @@ void Workspace::storeSession(KConfig* config, SMSavePhase phase) for (ClientList::Iterator it = clients.begin(); it != clients.end(); ++it) { Client* c = (*it); + if (c->windowType() > NET::Splash) { + //window types outside this are not tooltips/menus/OSDs + //typically these will be unmanaged and not in this list anyway, but that is not enforced + continue; + } QByteArray sessionId = c->sessionId(); QByteArray wmCommand = c->wmCommand(); if (sessionId.isEmpty()) @@ -184,6 +189,9 @@ void Workspace::storeSubSession(const QString &name, QSet sessionIds int active_client = -1; for (ClientList::Iterator it = clients.begin(); it != clients.end(); ++it) { Client* c = (*it); + if (c->windowType() > NET::Splash) { + continue; + } QByteArray sessionId = c->sessionId(); QByteArray wmCommand = c->wmCommand(); if (sessionId.isEmpty()) From 576efedb1adc5c05f4d20e02f2a3e81774b54152 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 6 Apr 2019 09:35:59 +0200 Subject: [PATCH 2/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- effects/translucency/package/metadata.desktop | 2 +- kcmkwin/kwincompositing/kcmkwineffects.desktop | 2 +- kcmkwin/kwinoptions/kwinmoving.desktop | 4 ++-- kcmkwin/kwinscreenedges/kwinscreenedges.desktop | 6 +++--- kcmkwin/kwinscreenedges/kwintouchscreen.desktop | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/effects/translucency/package/metadata.desktop b/effects/translucency/package/metadata.desktop index a281a6a4be..0978ea4f0b 100644 --- a/effects/translucency/package/metadata.desktop +++ b/effects/translucency/package/metadata.desktop @@ -110,7 +110,7 @@ Comment[hne]=अलग अलग स्थिति मं विंडो ल Comment[hr]=Učini prozore prozirnima pod raznim uvjetima Comment[hu]=Áttetszővé tesz ablakokat bizonyos feltételek teljesülése esetén Comment[ia]=On face fenestra translucente sub conditiones differente -Comment[id]=Buat window translusens di bawah kondisi berbeda +Comment[id]=Buat window bening di bawah kondisi yang berbeda Comment[is]=Gerir glugga hálfgegnsæa við ýmis tilefni Comment[it]=Rende le finestre translucide in certe condizioni Comment[ja]=さまざまな状況でウィンドウを半透明にします diff --git a/kcmkwin/kwincompositing/kcmkwineffects.desktop b/kcmkwin/kwincompositing/kcmkwineffects.desktop index 7499efdbeb..c106a9b5ad 100644 --- a/kcmkwin/kwincompositing/kcmkwineffects.desktop +++ b/kcmkwin/kwincompositing/kcmkwineffects.desktop @@ -117,7 +117,7 @@ X-KDE-Keywords[fi]=kwin,ikkuna,ohjelma,ikkunointi,ikkunointiohjelma,ikkunanhalli X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, effets 3D, effets 2D, effets graphiques, effets de bureau, animations, animations variés, effets de gestion des fenêtres, effets de changement de fenêtre, effets de changement de bureau, animations, animation du bureau, pilotes, paramètres du pilote, rendu, rendre, effet d'inversion, effet de verre, effet de loupe, effet d'aide au positionnement, effet de repérage de la souris, effet de zoom,effet de flou, effet du tableau de bord, effet d'explosion, effet de fondu, effet de fondu du bureau, effet d'effondrement, effet de glissement, effet de mise en valeur de la fenêtre, effet de connexion, effet de déconnexion, effet de lampe magique, effet de minimisation de l'application, effet de marque de la souris, effet de gradation, effet de capture d'écran, effet de feuille, effet de glisse, effet d'annotations glissantes, effet vignettes dans la barre des tâches, effet vignettes sur le coté, translucidité, effet de translucidité, transparence, effet de géométrie de la fenêtre, effet de fenêtre en gélatine, effet du témoin de démarrage, effet de dialogue parent, effet d'obscurcissement de fenêtre inactive, effet d'obscurcissement du bureau, effet de glissement en arrière, confort visuel, beauté, effet d'affichage du FPS, effet d'affichage des zones peintes, effet de défilement dans une boîte, effet de défilement circulaire, effet de bureaux en cube, effet d'animation de cube de bureaux, effet de bureaux en grille, effet d'empilement en perspective, effet d'esquisse, effet de présentation des fenêtres, effet de redimensionnement des fenêtres X-KDE-Keywords[gl]=kwin,window,xanela,manager,xestor,effect,efecto,3D effects,efectos 3D,2D effects,efectos 2D,configuración de vídeo,graphical effects,efectos gráficos,efectos visuais,desktop effects,efectos de escritorio,animations,animacións,various animations,animacións diversas,varias animacións,animacións variadas,window management effects,efectos de xestión de xanelas,window switching effect,efecto de cambio de xanela,desktop switching effect,efecto de cambio de escritorio,animations,animacións,desktop animations,animacións de escritorio,animacións dos escritorios,animacións do escritorio,drivers,controlador,controladores,driver settings,configuración dos controladores,configuración do controlador,rendering,renderización,renderizado,renderizamento,render,renderizar,invert effect,inverter un efecto,inverter efecto,reverter un efecto,reverter efecto,looking glass effect,efecto de lupa,efecto lupa,magnifier effect,snap helper effect,track mouse effect,efecto de seguir o rato,efecto de seguimento do rato,zoom effect,efecto de ampliación,blur effect,efecto borroso,explosion effect,efecto de explosión,fade effect,efecto de esvaer,fade desktop effect,efecto de esvaer o escritorio,fall apart effect,efecto de destrución,glide effect,efecto de brillo,highlight window effect,efecto de realzar a xanela,efecto de resaltar a xanela,efecto de salientar a xanela,efecto de salientar a xanela,login effect,efecto de acceder,logout effect,efecto de saír,magic lamp effect,efecto de lámpada máxica,minimize animation effect,efecto de minimizar,mouse mark effect,efecto de marca co rato,scale in effect,efecto de achegar,efecto de cambia de escala,screenshot effect,efecto de captura,sheet effect,efecto de folla,slide effect,efecto de dispositiva,sliding popups effect,taskbar thumbnails effect,efecto de miniaturas,thumbnail aside effect,translucency,transparencia,translucidez,translucency effect,efecto de translucidez,efecto de transparencia,transparency,transparencia,window geometry effect,efecto de xeometría da xanela,efecto de xeometría das xanelas,wobbly windows effect,efecto de xanelas a tremer,startup feedback effect,dialog parent effect,efecto do pai do diálogo,dim inactive effect,dim screen effect,efecto de escurecer,slide back effect,eye candy,candy,show FPS effect,efecto de mostrar os FPS,show paint effect,box switch effect,cover switch effect,desktop cube effect,efecto de cubo de escritorio,efecto do cubo de escritorio,efecto de cubo do escritorio,desktop cube animation effect,desktop grid effect,efecto de grade de escritorios,efecto de grade de escritorios,flip switch effect,efecto de interruptor,outline effect,efecto de contorno,present windows effect,resize window effect,efecto de cambio de tamaño das xanelas X-KDE-Keywords[hu]=kwin,ablak,kezelő,hatás,3D hatás,2D hatás,grafikai hatások,asztali hatások,animációk,különféle animációk,ablakkezelő hatások,ablakváltó hatások,asztalváltó hatások,animációk,asztali animációk,meghajtók,meghajtó beállítások,leképezés,renderelés,fordított hatás,tükörhatás,nagyító hatás,elkapás segítő hatás,egérkövetés hatás,nagyítás hatás,elmosás,robbanás hatás,elhalványulás hatás,asztal elhalványulása hatás,széteső hatás,csúszás hatás,ablak kiemelése hatás,belépés hatás,kilépés hatás,varázslámpa hatás,minimalizálás animáció hatás,egérjelölés hatás,méretezés hatás,képernyőkép hatás,munkalap hatás,dia hatás,csúszó felugrók hatás,feladatsáv bélyegképek hatás,bélyegképek félre hatás,áttetszőség,áttetszőség hatás,átlátszóság,ablak geometria hatás,ingó ablak hatás,indulási visszajelzés hatás,párbeszédablak szülő hatás,dim inaktív hatás,dim kijelző hatás,dia vissza hatás,látványelem,édesség,FPS megjelenítése hatás,festék megjelenése hatás,dobozváltás hatás,eltakarás váltás hatás,asztal kocka hatás,asztal kockaanimáció hatás,asztal rács hatás,tükrözésváltás hatás,körvonal hatás,jelenlegi ablakok hatás,ablak átméretezése hatás -X-KDE-Keywords[id]=kwin,window,pengelola,efek,efek 3D,efek 2D,efek grafik,efek desktop,animasi,beragam animasi,efek pengelola window,efek beralih window,efek beralih desktop,animasi,animasi desktop,driver,setelan driver,rendering,render,efek kebalikan,efek seperti gelas,efek kaca pembesar,efek pembantu patah,efek lacak mouse,efek pembesaran,efek buram,efek ledakan,efek lesap,efek desktop lesap,efek hancur,efek petak,efek window sorot,efek login,efek logout,efek lampu ajaib,efek animasi minimalkan,efek tanda mouse,efek skala,efek cuplikan layar,efek lembar,efek geser,efek sembul geser,efek thumbnails taskbar,efek thumbnail disamping,translusensi,efek translusensi,transparan,efek geometri window,efek window goyang,efek feedback pemulaian,efek induk dialog,efek layar suram,efek geser mundur,eye candy,candy,efek tampilkan FPS,efek tampilkan lukisan,efek alih kotak,efek alih sampul,efek kubus desktop,efek animasi kubus desktop,efek kisi desktop,efek alih lipat,efek guratan,efek window hadir,efek ubah ukuran window +X-KDE-Keywords[id]=kwin,window,pengelola,efek,efek 3D,efek 2D,efek grafik,efek desktop,animasi,beragam animasi,efek pengelola window,efek beralih window,efek beralih desktop,animasi,animasi desktop,driver,setelan driver,rendering,render,efek kebalikan,efek seperti gelas,efek kaca pembesar,efek penunjang jepret,efek lacak mouse,efek pembesaran,efek buram,efek ledakan,efek lesap,efek desktop lesap,efek hancur,efek petak,efek window sorot,efek login,efek logout,efek lampu ajaib,efek animasi minimalkan,efek tanda mouse,efek skala,efek cuplikan layar,efek lembar,efek geser,efek sembul geser,efek thumbnails taskbar,efek thumbnail disamping,translusensi,efek translusensi,transparan,efek geometri window,efek window goyang,efek feedback pemulaian,efek induk dialog,efek layar suram,efek geser mundur,eye candy,candy,efek tampilkan FPS,efek tampilkan lukisan,efek alih kotak,efek alih sampul,efek kubus desktop,efek animasi kubus desktop,efek kisi desktop,efek alih lipat,efek guratan,efek window hadir,efek ubah ukuran window X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,effetti 3D,effetti 2D,effetti grafici,effetti del desktop,animazioni,animazioni varie, effetti del gestore delle finestre,effetto dello scambiafinestre,effetto dello scambiatore di desktop,animazioni,animazioni del desktop,driver,impostazioni driver,rendering,render,effetto invertito,effetto vetro,effetto lente,effetto snap helper,effetto evidenzia mouse,effetto ingrandimento, effetto sfocatura,effetto esplosione,effetto dissolvenza,effetto dissolvenza desktop,effetto caduta,effetto planatura,effetto evidenziazione finestra,effetto schermata di accesso, effetto disconnessione,effetto lampada magica,effetto animazione di minimizzazione,effetto tracciatura mouse, effetto scalatura,effetto schermata,effetto foglio,effetto diapositiva,effetto scivolamento,effetto miniature nella barra delle applicazioni,effetto miniatura su un lato,translucenza,effetto translucenza, trasparenza,effetto geometria finestra,effetto finestre tremolanti,effetto segnale di avvio,effetto finestra madre,effetto oscura finestra inattiva,effetto oscura schermo,effetto scivola all'indietro,gradevole,effetto gradevole,effetto mostra FPS,effetto ridisegno,effetto scambio cubi,effetto scambio copertina,effetto cubi del desktop,effetto animazione cubi del desktop,effetto griglia desktop,effetto scambiatore con inversione,effetto riquadro,effetto finestra presente,effetto ridimensionamento finestra X-KDE-Keywords[ko]=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,desktop animations,drivers,driver settings,rendering,render,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,dashboard effect,explosion effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale in effect,screenshot effect,sheet effect,slide effect,sliding popups effect,taskbar thumbnails effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,box switch effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,outline effect,present windows effect,resize window effect,창,관리자,효과,3D 효과,2D 효과,그래픽 효과,데스크톱 효과,애니메이션,창 관리자,창 관리자 효과,데스크톱 전환,데스크톱 전환 효과,드라이버,드라이버 설정,렌더링,렌더링 설정,애니메이션 속도,투명 유리 효과,확대 축소 효과,흐림 효과,대시보드 효과,폭발 효과,페이드 효과,로그인 효과,창 강조 효과,글라이드 효과,로그아웃 효과,램프 효과,시트 효과,최소화 효과,최대화 효과,팝업 효과 X-KDE-Keywords[nl]=kwin,venster,beheerder,effect,3D effecten,2D effecten,grafische effecten,bureaubladeffecten,animaties,verrschillende animaties,vensterbeheereffecten,vensteromschakeleffect,bureaublad-omschakeleffect,animaties,bureaubladanimaties,stuurprogramma's,stuurprogramma-instellingen,rendering,render,inversieeffect,vergrootglaseffect,vergrotingseffect,snaphelpereffect,trackmuiseffect,zoomeffect,vervagingseffect,explosie-effect,uitvaageffect,uitvaagbureaubladeffect,uiteenvaleffect,glijeffect,vebsteraccentueringseffect,aanmeldeffect,afmeldeffect,magische lampeffect,animatie-effect minimaliseren,muismarkeringseffect,inschaaleffect,schermafdrukeffect,bladeneffect,diaeffect,glijdende pop-upseffect,taakbalkminiatuureffect,miniatuur-opzijeffect,doorzichtigheid,doorzichtigheidseffect,transparantie,vensterafmetingeneffect,wiebelende vensterseffect,opstartterugkoppeleffect,dialoogoudereffect,dim bij inactiviteitseffect,dim het schermeffect,schuif terugeffect,oogstrelend,snoepgoed,FPS toneneffect,verf toneneffect,vak omschakeleffect,deksel schakelaareffect,bureaublad kubuseffect,bureaublad kubus animatie-effect,bureaubladrastereffect,omschakeleffect,omrandingeffect,huidig venstereffect, wijzig grootte van venstereffect diff --git a/kcmkwin/kwinoptions/kwinmoving.desktop b/kcmkwin/kwinoptions/kwinmoving.desktop index c10089e668..edbb35c81f 100644 --- a/kcmkwin/kwinoptions/kwinmoving.desktop +++ b/kcmkwin/kwinoptions/kwinmoving.desktop @@ -115,7 +115,7 @@ Comment[gl]=Movemento da xanela Comment[he]=מסגרת חלון Comment[hu]=Ablakmozgatás Comment[ia]=Movimento de fenestra -Comment[id]=Memindahkan Window +Comment[id]=Pemindahan Window Comment[it]=Spostamento delle finestre Comment[ko]=창 이동 Comment[lt]=Lango judinimas @@ -158,7 +158,7 @@ X-KDE-Keywords[fr]=déplacement, intelligent, cascade, maximiser, maximise, zone X-KDE-Keywords[gl]=mover,intelixente,solapar,fervenza,maximizar,minimizar,zona de adherencia, adherencia,bordo,beira,bordo X-KDE-Keywords[hu]=mozgatás,intelligens,lépcsőzetes,maximalizálás,maximalizálás,vonzási távolság,szegély X-KDE-Keywords[ia]=movente,intelligente,cascada,maximisa,maximisa,zona de ruptura,ruptura,margine -X-KDE-Keywords[id]=memindahkan,cerdas,riam,maksimalkan,maksimalkan,zona patah,patah,batas +X-KDE-Keywords[id]=pemindahan,cerdas,kaskade,maksimalkan,maksimalkan,zona jepret,jepret,bingkai X-KDE-Keywords[it]=spostamento,intelligente,cascata,massimizza,zona di aggancio,agganciamento,bordo X-KDE-Keywords[kk]=moving,smart,cascade,maximize,maximise,snap zone,snap,border X-KDE-Keywords[km]=moving,smart,cascade,maximize,maximise,snap zone,snap,border diff --git a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop index b8532711e9..39c9121779 100644 --- a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop +++ b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop @@ -39,7 +39,7 @@ Name[hi]=स्क्रीन सीमाएँ Name[hr]=Rubovi ekrana Name[hu]=Képernyőszélek Name[ia]=Margines de schermo -Name[id]=Screen Edges +Name[id]=Tepian Layar Name[is]=Skjájaðrar Name[it]=Lati dello schermo Name[ja]=スクリーンエッジ @@ -98,7 +98,7 @@ Comment[fr]=Bords et coins actifs de l'écran Comment[gl]=Bordos e esquinas activos da pantalla Comment[he]=פינות וקצוות של המסך Comment[hu]=Aktív képernyősarkok és szélek -Comment[id]=Pojok dan Tepi Layar Aktif +Comment[id]=Tepian dan Sudut Layar Aktif Comment[it]=Angoli e bordi attivi dello schermo Comment[ko]=활성 화면 경계와 꼭지점 Comment[lt]=Aktyvaus ekrano kampai ir kraštinės @@ -140,7 +140,7 @@ X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, bord, coin, bordure, act X-KDE-Keywords[gl]=kwin,xanela,xestor,efecto,esquina,beira,bordo,bordo,acción,trocar,escritorio,bordo do escritorio,maximizar xanelas,escritorio virtual,esquinas da pantalla X-KDE-Keywords[hu]=kwin,ablak,kezelő,effektus,sarok,szél,szegély,művelet,váltás,asztal,kwin képernyőszél,asztalszél,képernyőszél,ablakok maximalizálása,ablakcím,képernyőoldal,képernyő működése,asztalváltás,virtuális asztal,képernyősarkok X-KDE-Keywords[ia]=kwin,fenestra,gerente,effecto,bordo,margine,action,commuta,scriptorio,bordos de schermo de kwin,bordos de scriptorio,bordos de scriptorio,maximisa fenestras,tegula fenestras,parte de schermo, comportamento de schermo,commuta scriptorio,scriptorio virtual,angulos de schermo -X-KDE-Keywords[id]=kwin,window,pengelola,efek,sudut,bingkai,batas,aksi,ganti,desktop,bingkai layar kwin,bingkai desktop,bingkai layar,maksimalkan window,window ubin,bingkai layar,perilaku layar,ganti desktop,desktop virtual,sudut layar +X-KDE-Keywords[id]=kwin,window,pengelola,efek,sudut,,tepi,bingkai,aksi,alihkan,desktop,tepian layar kwin,tepian desktop,tepian layar,maksimalkan window,ubinkan window,sisi layar,perilaku layar,alihkan desktop,virtualkan desktop,sudut layar X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,angolo,bordo,azione,scambiatore,desktop,bordi schermo kwin,bordi desktop,bordi schermo,massimizza finestre,affianca finestre,lato dello schermo,comportamento schermo,scambia desktop,desktop virtuale,angoli dello schermo X-KDE-Keywords[ko]=kwin,window,manager,effect,corner,edge,border,action,switch,desktop,kwin screen edges,desktop edges,screen edges,maximize windows,tile windows,side of screen,screen behavior,switch desktop,virtual desktop,screen corners,창,관리자,효과,경계,경계선,동작,액션,전환,kwin 화면 경계,화면 경계,창 최대화,최대화,바둑판식 배열,화면 행동,데스크톱 전환,가상 데스크톱,화면 모서리,꼭지점 X-KDE-Keywords[nb]=kwin,vindu,behandler,effekt,kant,hjørne,ramme,handling,bytte,skrivebord,kwin skjermkanter,skrivebordkanter,skjermkanter,maksimere vinduer,flislegge vinduer,skjermside,skjermoppførsel,bytte skrivebord,virtuelt skrivebord,skjermhjørner diff --git a/kcmkwin/kwinscreenedges/kwintouchscreen.desktop b/kcmkwin/kwinscreenedges/kwintouchscreen.desktop index b27d5ca914..bb20aea65a 100644 --- a/kcmkwin/kwinscreenedges/kwintouchscreen.desktop +++ b/kcmkwin/kwinscreenedges/kwintouchscreen.desktop @@ -96,7 +96,7 @@ X-KDE-Keywords[fi]=kwin,ikkuna,hallinta,tehoste,kulma,laita,reuna,toiminto,vaihd X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, bord, bordure, action, bascule, bureau, bords du bureau, bords de l'écran, côté de l'écran, comportement de l'écran, écran tactile X-KDE-Keywords[gl]=kwin,window,xanela,manager,xestor,effect,efecto,edge,beira,bordo,contorno,esquina,border,action,acción,switch,cambiar,conmutar,trocar,desktop,escritorio,desktop edges,screen edges,pantalla,side of screen,screen behavior,comportamento,touch screen,táctil X-KDE-Keywords[hu]=kwin,ablak,kezelő,effektus,szél,szegély,művelet,váltás,asztal,asztalszél,képernyőszél,képernyőoldal,képernyő működése,érintőképernyő -X-KDE-Keywords[id]=kwin,window,pengelola,efek,bingkai,batas,aksi,alih,desktop,bingkai desktop,bingkai layar,sisi layar,perilaku layar,layar sentuh +X-KDE-Keywords[id]=kwin,window,pengelola,efek,tepi,bingkai,aksi,alih,desktop,tepian desktop,tepian layar,sisi layar,perilaku layar,layar sentuh X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,angolo,bordo,azione,scambiatore,desktop,bordi desktop,bordi schermo,lato dello schermo,comportamento schermo,schermo a sfioramento X-KDE-Keywords[ko]=kwin,window,manager,effect,edge,border,action,switch,desktop,desktop edges,screen edges,side of screen,screen behavior,touch screen,창,관리자,효과,경계,경계선,동작,액션,데스크톱,화면 경계,경계,터치,터치 스크린,터치스크린 X-KDE-Keywords[nl]=kwin,venster,beheerder,effect,kant,rand,actie,omschakelen,bureaublad,bureaubladkanten,schermkanten,zijkant van het scherm,schermgedrag,aanraakscherm From f6ddaf505da1554d7d55771a53f6213c8fba60f3 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 8 Apr 2019 09:15:36 +0200 Subject: [PATCH 3/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- kcmkwin/kwinscreenedges/kwintouchscreen.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kcmkwin/kwinscreenedges/kwintouchscreen.desktop b/kcmkwin/kwinscreenedges/kwintouchscreen.desktop index bb20aea65a..2af9ed8448 100644 --- a/kcmkwin/kwinscreenedges/kwintouchscreen.desktop +++ b/kcmkwin/kwinscreenedges/kwintouchscreen.desktop @@ -61,7 +61,7 @@ Comment[fr]=Mouvements sur l'écran tactile Comment[gl]=Xestos de pantalla táctil Comment[he]=מחוות החלקה של מסכי מגע Comment[hu]=Érintőképernyő-gesztusok -Comment[id]=Isyarat usapan layar sentuh +Comment[id]=Gestur usap layar sentuh Comment[it]=Gesti dello schermo a sfioramento Comment[ko]=터치 스크린 밀기 제스처 Comment[nl]=Veeggebaren voor aanraakscherm From a9bfec5f16b461a85b3780e2f0ad53fd26625cad Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 17 Apr 2019 09:16:37 +0200 Subject: [PATCH 4/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- kcmkwin/kwinrules/kwinrules.desktop | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kcmkwin/kwinrules/kwinrules.desktop b/kcmkwin/kwinrules/kwinrules.desktop index 9c541e7d31..191e75970a 100644 --- a/kcmkwin/kwinrules/kwinrules.desktop +++ b/kcmkwin/kwinrules/kwinrules.desktop @@ -35,7 +35,7 @@ Name[hi]=विंडो निय Name[hr]=Pravila prozora Name[hu]=Ablakszabályok Name[ia]=Regulas de fenestra -Name[id]=Pengaturan Window +Name[id]=Peraturan Window Name[is]=Gluggahegðunarreglur Name[it]=Regole delle finestre Name[ja]=ウィンドウルール @@ -135,7 +135,7 @@ X-KDE-Keywords[ga]=méid,ionad,staid,oibriú na bhfuinneog,fuinneoga,sainiúil,r X-KDE-Keywords[gl]=tamaño,posición,estado,comportamento da xanela,xanelas,específico,regra X-KDE-Keywords[hu]=méret,elhelyezkedés,állapot,ablakműködés,ablakok,specifikus,kerülő megoldások,megjegyzés,szabályok X-KDE-Keywords[ia]=grandor,position,stato,comportamento de fenestra,fenestras,specific,workarounds,memora,regulas -X-KDE-Keywords[id]=ukuran,posisi,kondisi,perilaku window,window,spesifik,sekeliling,ingat,aturan +X-KDE-Keywords[id]=ukuran,posisi,kondisi,perilaku window,window,spesifik,sekeliling,ingat,peraturan X-KDE-Keywords[it]=dimensione,posizione,stato,comportamento della finestra,finestre,specifico,espedienti,ricorda,regole X-KDE-Keywords[kk]=size,position,state,window behavior,windows,specific,workarounds,remember,rules X-KDE-Keywords[km]=size,position,state,window behavior,windows,specific,workarounds,remember,rules From 67444e36592e78d46b757a6c72be1d50bdae19e6 Mon Sep 17 00:00:00 2001 From: Vlad Zagorodniy Date: Thu, 23 May 2019 21:21:11 +0300 Subject: [PATCH 5/5] [effects/screenshot] Upload data to xpixmap in chunks Summary: xcb_put_image doesn't handle big images well. Contrary to XPutImage, the caller must manually split the data in such a way that each xcb_put_image request doesn't exceed the maximum request length. Not doing so will result in libxcb shutting down the connection. CCBUG: 338489 CCBUG: 388182 Test Plan: Take a screenshot of an active fullscreen client on a 4K monitor. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D21370 --- effects/screenshot/screenshot.cpp | 80 +++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/effects/screenshot/screenshot.cpp b/effects/screenshot/screenshot.cpp index af1903eb76..d6e121a8da 100644 --- a/effects/screenshot/screenshot.cpp +++ b/effects/screenshot/screenshot.cpp @@ -87,6 +87,75 @@ static QImage xPictureToImage(xcb_render_picture_t srcPic, const QRect &geometry } #endif +static QSize pickWindowSize(const QImage &image) +{ + xcb_connection_t *c = effects->xcbConnection(); + + // This will implicitly enable BIG-REQUESTS extension. + const uint32_t maximumRequestSize = xcb_get_maximum_request_length(c); + const xcb_setup_t *setup = xcb_get_setup(c); + + uint32_t requestSize = sizeof(xcb_put_image_request_t); + + // With BIG-REQUESTS extension an additional 32-bit field is inserted into + // the request so we better take it into account. + if (setup->maximum_request_length < maximumRequestSize) { + requestSize += 4; + } + + const uint32_t maximumDataSize = 4 * maximumRequestSize - requestSize; + const uint32_t bytesPerPixel = image.depth() >> 3; + const uint32_t bytesPerLine = image.bytesPerLine(); + + if (image.sizeInBytes() <= maximumDataSize) { + return image.size(); + } + + if (maximumDataSize < bytesPerLine) { + return QSize(maximumDataSize / bytesPerPixel, 1); + } + + return QSize(image.width(), maximumDataSize / bytesPerLine); +} + +static xcb_pixmap_t xpixmapFromImage(const QImage &image) +{ + xcb_connection_t *c = effects->xcbConnection(); + + xcb_pixmap_t pixmap = xcb_generate_id(c); + xcb_gcontext_t gc = xcb_generate_id(c); + + xcb_create_pixmap(c, image.depth(), pixmap, effects->x11RootWindow(), + image.width(), image.height()); + xcb_create_gc(c, gc, pixmap, 0, nullptr); + + const int bytesPerPixel = image.depth() >> 3; + + // Figure out how much data we can send with one invocation of xcb_put_image. + // In contrast to XPutImage, xcb_put_image doesn't implicitly split the data. + const QSize window = pickWindowSize(image); + + for (int i = 0; i < image.height(); i += window.height()) { + const int targetHeight = qMin(image.height() - i, window.height()); + const uint8_t *line = image.scanLine(i); + + for (int j = 0; j < image.width(); j += window.width()) { + const int targetWidth = qMin(image.width() - j, window.width()); + const uint8_t *bytes = line + j * bytesPerPixel; + const uint32_t byteCount = targetWidth * targetHeight * bytesPerPixel; + + xcb_put_image(c, XCB_IMAGE_FORMAT_Z_PIXMAP, pixmap, + gc, targetWidth, targetHeight, j, i, 0, image.depth(), + byteCount, bytes); + } + } + + xcb_flush(c); + xcb_free_gc(c, gc); + + return pixmap; +} + void ScreenShotEffect::paintScreen(int mask, QRegion region, ScreenPaintData &data) { m_cachedOutputGeometry = data.outputGeometry(); @@ -181,16 +250,7 @@ void ScreenShotEffect::postPaintScreen() } if (m_windowMode == WindowMode::Xpixmap) { - const int depth = img.depth(); - xcb_pixmap_t xpix = xcb_generate_id(xcbConnection()); - xcb_create_pixmap(xcbConnection(), depth, xpix, x11RootWindow(), img.width(), img.height()); - - xcb_gcontext_t cid = xcb_generate_id(xcbConnection()); - xcb_create_gc(xcbConnection(), cid, xpix, 0, NULL); - xcb_put_image(xcbConnection(), XCB_IMAGE_FORMAT_Z_PIXMAP, xpix, cid, img.width(), img.height(), - 0, 0, 0, depth, img.byteCount(), img.constBits()); - xcb_free_gc(xcbConnection(), cid); - xcb_flush(xcbConnection()); + const xcb_pixmap_t xpix = xpixmapFromImage(img); emit screenshotCreated(xpix); m_windowMode = WindowMode::NoCapture; } else if (m_windowMode == WindowMode::File) {