Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
Byla publikována Výroční zpráva Blender Foundation za rok 2024 (pdf).
Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.
Byla vydána nová verze 4.5 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
win_id = XCreateSimpleWindow(display, parent_id, 0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT, 0, BlackPixel(display, screen), WhitePixel(display, screen));a pak pomoci mysi nebo programove funkcemi XResizeWindow nebo XConfigureWindow menim velikost, tak v okne zustane bily obdelnik s velikosti puvodniho okna a cerne okraje, kreslit lze pouze do tohoto obdelniku. Vypada to jako by se se zmenou velikosti okna nemenila velikost plochy, do ktere lze kreslit. Tohleto dela i kdyz vytvorim normalni okno nebo i kdyz vytvorim GLX kontext a vykresluju do okna OpenGL scenu nebo kdyz okno vytvorim pomoci XCreateWindow. Budu rad i za pripadne napady nebo rady i kdyz presne nebudete vedet v cem to je.
#include <unistd.h> #include <X11/Xlib.h> main(int argc,char * argv[] ) { XEvent mapev; Display *dpy; Window win; GC gc; dpy = XOpenDisplay(0); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 100, 100, 0, 0, 0); XSelectInput(dpy, win, StructureNotifyMask); XMapWindow(dpy, win); do { XNextEvent(dpy, &mapev); } while (mapev.type != MapNotify); gc = XCreateGC(dpy, win, 0, 0); XSetForeground(dpy, gc, WhitePixel(dpy, DefaultScreen(dpy))); /* sqrt(2)*100px cary: / */ XDrawLine(dpy, win, gc, 0, 100, 100, 0); XDrawLine(dpy, win, gc, 0, 0, 100, 100); XFlush(dpy); sleep(2); /* resize */ XResizeWindow(dpy, win, 200, 200); XFlush(dpy); /* sqrt(2)*100px cary */ XDrawLine(dpy, win, gc, 0, 200, 200, 0); XDrawLine(dpy, win, gc, 0, 0, 200, 200); XFlush(dpy); sleep(2); return 0; }Takže by to chtělo ukázku kódu, který nefunguje.
/* sqrt(2)*200px cary */
#include unistd.h #include X11/Xlib.h main(int argc,char * argv[] { Display * display; Window win_id; int screen; GC gc; long event_mask; XEvent event; display = XOpenDisplay(0); screen = DefaultScreen(display); win_id = XCreateSimpleWindow(display, RootWindow(display, screen), 0, 0, 100, 100, 0, BlackPixel(display, screen), WhitePixel(display, screen)); event_mask = ResizeRedirectMask | StructureNotifyMask; XSelectInput(display, win_id, event_mask); XMapWindow(display, win_id); do { XNextEvent(display, &event); } while (event.type != MapNotify); gc = XCreateGC(display, win_id, 0, 0); XResizeWindow(display, win_id, 400, 400); XFlush(display); while (1) { while (XCheckWindowEvent(display, win_id, event_mask, &event)) { switch (event.type) { case ResizeRequest: { printf("widht: %d height %d\n", event.xresizerequest.width, event.xresizerequest.height); } } } XFlush(display); } return 0; }Mimochodem co dela tahle cast?:
do { XNextEvent(display, &event); } while (event.type != MapNotify);
#include unistd.h #include X11/Xlib.h main(int argc,char * argv[] ) { Display * display; Window win_id; int screen; GC gc; long event_mask; XEvent event; int width = 100; int height = 100; display = XOpenDisplay(0); screen = DefaultScreen(display); win_id = XCreateSimpleWindow(display, RootWindow(display, screen), 0, 0, width, height, 0, BlackPixel(display, screen), WhitePixel(display, screen)); event_mask = ResizeRedirectMask | StructureNotifyMask; XSelectInput(display, win_id, event_mask); XMapWindow(display, win_id); do { XNextEvent(display, &event); } while (event.type != MapNotify); gc = XCreateGC(display, win_id, 0, 0); XResizeWindow(display, win_id, 400, 400); XFlush(display); while (1) { while (XCheckWindowEvent(display, win_id, event_mask, &event)) { switch (event.type) // jaka je ziskana zprava { case ResizeRequest: // externi zmena velikosti okna { width = event.xresizerequest.width; height = event.xresizerequest.height; printf("widht: %d height %d\n", width, height); } } XSetForeground(display, gc, BlackPixel(display, screen)); XDrawLine(display, win_id, gc, 0, height, width, 0); XDrawLine(display, win_id, gc, 0, 0, width, height); XFlush(display); } } return 0; }akorat misto GC je GLXContext a misto kresleni uhlopricek je kresleni sceny. Ta se vykresluje normalne, ale pouze do obdelniku o puvodni velikosti okna. S Xlib zacinam a nevsimnul jsem si, ze by existovala nejaka obsluha udalosti Paint jako je tomu v GLUT.
S Xlib zacinamXlib potřebuješ, leda pokud si píšeš vlastní GUI toolkit nebo window manager, nebo pokud hackuješ ty stávající. Takže Xlib nejspíš nepotřebuješ
#include unistd.h #include X11/Xlib.h main(int argc,char * argv[] ) { Display * display; Window win_id; int screen; GC gc; long event_mask; XEvent event; int width = 100; int height = 100; display = XOpenDisplay(0); screen = DefaultScreen(display); win_id = XCreateSimpleWindow(display, RootWindow(display, screen), 0, 0, width, height, 0, BlackPixel(display, screen), WhitePixel(display, screen)); event_mask = StructureNotifyMask | ExposureMask; XSelectInput(display, win_id, event_mask); XMapWindow(display, win_id); do { XNextEvent(display, &event); } while (event.type != MapNotify); gc = XCreateGC(display, win_id, 0, 0); XResizeWindow(display, win_id, 400, 400); XFlush(display); while (1) { while (XCheckWindowEvent(display, win_id, event_mask, &event)) { switch (event.type) // jaka je ziskana zprava { case ConfigureNotify: { width = event.xconfigure.width; height = event.xconfigure.height; printf("widht: %d height %d\n", width, height); } break; case Expose: // externi zmena velikosti okna { XSetForeground(display, gc, WhitePixel(display, screen)); XDrawLine(display, win_id, gc, 0, height, width, 0); XDrawLine(display, win_id, gc, 0, 0, width, height); XFlush(display); } break; } } } return 0; }Nefungovalo to do te doby nez jsem smazal z event_mask ResizeRedirectMask. Pokud to predpokladam spravne, tak chyba byla asi v tom ze tim, ze tam byla zadost o ResizeRequest zpravy jsem si musel napsat vlastni obsluhu zmeny velikosti okna, nebo jeho graficke casti nebo tak nejak. Mam pravdu?. No prave, ze si ten vlastni GUI toolkit na OpenGL pisu. Drive jsem ho psal pod GLUT, ale zjistil jsem ze se pod Linuxem a Windows chova trochu jinak a ze ma nektere dost neprijemne vlastnosti, tak to tedka pisu rovnou pod Xlib.
Tiskni
Sdílej: