Programim dhe zhvillim, javascript, python, php, html

Si të merrni emrin e modalitetit duke përdorur XCB?

Në Xlib struktura XRRModeInfo përmban, përveç fushës nameLength, vetë name. Por në XCB struktura përkatëse xcb_randr_mode_info_t përmban vetëm name_len, dhe duket se nuk ka asnjë funksion për të marrë vargun aktual të emrit.

Unë i shoh të gjithë emrat e modaliteteve në varg të kthyer nga xcb_randr_get_screen_resources_names(), por ata janë të gjithë të bashkuar dhe nuk e di se si të gjej zhvendosjen e një modaliteti të veçantë në këtë varg.

Pra, si mund ta marr emrin e modalitetit duke përdorur XCB?

04.04.2020

Përgjigjet:


1

Unë i shoh të gjithë emrat e modaliteteve në vargun e kthyer nga xcb_randr_get_screen_resources_names(), por të gjithë janë të bashkuar dhe nuk e di se si të gjej kompensimin e një modaliteti të veçantë në këtë varg.

Ju keni gjatësinë e emrave individualë dhe e dini gjatësinë e secilit emër, kështu që ju vetëm duhet të numëroni bajt:

#include <stdio.h>
#include <xcb/randr.h>

int main()
{
        xcb_connection_t *c = xcb_connect(NULL, NULL);
        xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(c)).data;
        // TODO: Error handling
        // TODO: Checking if the RandR extension is available
        xcb_randr_get_screen_resources_reply_t *reply =
                xcb_randr_get_screen_resources_reply(c,
                                xcb_randr_get_screen_resources(c, screen->root),
                                NULL);
        xcb_randr_mode_info_iterator_t iter = xcb_randr_get_screen_resources_modes_iterator(reply);
        uint8_t *names = xcb_randr_get_screen_resources_names(reply);
        while (iter.rem) {
                xcb_randr_mode_info_t *mode = iter.data;
                printf("Mode %d has size %dx%d and name %.*s\n",
                                mode->id, mode->width, mode->height, mode->name_len, names);
                names += mode->name_len;
                xcb_randr_mode_info_next(&iter);
        }
        free(reply);
        xcb_disconnect(c);
        return 0;
}
05.04.2020
  • Ah, kështu që nuk ka asnjë mënyrë O(1) (në numrin e modaliteteve) për ta bërë këtë, apo jo? 05.04.2020
  • Dy përgjigje: (1) Jo (2) A jeni vërtet i shqetësuar për performancën e marrjes së emrave të modaliteteve? Kjo duhet të jetë gjithmonë aq e shpejtë sa të mos ketë rëndësi. 06.04.2020
  • Në fakt, një e treta: Ju mund të krijoni tabelën tuaj të kërkimit për këto gjëra. Kjo tabelë mund të ndërtohet në kohën O(n) (duke supozuar se alokimi i memories është në O(1)). Në këtë mënyrë, ju në thelb merrni atë që Xlib bën për ju. Me XCB, ju thjesht merrni bajtet e papërpunuara në rrjet pa analizë ose përzierje të gjërave përreth. Pra, në një farë mënyre, XCB është më i mirë këtu pasi e bën koston e analizës më të dukshme. 06.04.2020
  • Unë nuk isha i shqetësuar me performancën në vetvete, por më tepër nëse libxcb-randr ka bërë tashmë disa përpunime që ky cikli po ri-bërë. Tani, pasi lexova burimin aktual të randr.c nga libxcb, shoh se, me të vërtetë, xcb_randr_get_screen_resources_reply_t është pjesa me gjatësi fikse e daljes së serverit e kthyer nga xcb_wait_for_reply(), kështu që XCB është një mbështjellës mjaft i hollë që nuk mund ta ketë bërë tashmë këtë përpunim. Kështu që përgjigja juaj është e mirë. 06.04.2020
  • Kjo shpjegon gjithashtu pse API është kaq i çuditshëm. (Thjesht nuk shpjegon pse protokolli është kaq i çuditshëm...) 07.04.2020
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..