0 votes

comment effacer les régions XFixes

J'écris un peu de code de bas niveau pour la plateforme X11. Pour obtenir les meilleures performances de copie de données, j'utilise les extensions XFixes/XDamage.

Comment puis-je effacer le contenu de la région XFixes après un cycle de rafraîchissement ? Ou bien se nettoient-ils d'eux-mêmes après que j'ai utilisé XFixesSetPictureClipRegion ?

Mon code est quelque chose comme ça :

Display xdpy;
XShamPixmap pixmap_;
XFixesRegion region_;

damage_event_callback(damage_geometry_t geometry, XDamage damage,...) {
    unsigned curr_region = XFixesCreateRegion(xdpy, 0, 0);
    XDamageSubtract(xdpy, damage, None, curr_region);
    XFixesTranslateRegion( xdpy, curr_region, geometry.left(), geometry.top() );
    XFixesUnionRegion (xdpy, region_, region_, curr_region);
    }    

process_damage_events(...) {
    XFixesSetPictureClipRegion( xdpy, pixmap_, 0, 0, region_);
    XCopyArea (xdpy, window_->id(),
               pixmap_, XDefaultGC(xdpy, XDefaultScreen(xdpy)),
               0,0,width(),height(),0,0);
    /*Should clear region_ here 
    */

    ...
    }

Actuellement, je nettoie la région en la supprimant et en la recréant, mais je suppose que ce n'est pas la meilleure façon de procéder.

1voto

Havoc P Points 4763

Je ne suis pas sûr de ce que vous entendez par effacer la région ; vous voulez dire annuler le clip sur votre image, ou libérer la région ?

Pour désactiver le clip, je pense que vous devez définir la région du clip sur None.

Pour libérer la région XFixesDestroyRegion()

Pour rendre la région vide, vous pouvez probablement XFixesSetRegion(dpy, region, NULL, 0) mais je ne suis pas sûr que cela changera le clip sur l'image à moins que vous XFixesSetPictureClipRegion à nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X