Posted By: dzemen () on 'CZprogram'
Title:     Re: Synchronizace na retrace pod win
Date:      Mon May 27 08:57:56 2002

> Ahoj.
> 
>   Napsal jsem si kod (ha ha ha :-), ktery mi zobrazuje prubeh vypoctu na 
> status baru dole. Samozrejme, ze na trochu rychlejsi masine to stihne za 
> vterinu treba 15 zobrazeni - no a pak mi status bar (mam na nem policko, 
> ktere meni barvu z cervene na zelenou - busy/idle + text na status baru)
> blika.
> 
>   teoreticky mohou byt dve reseni:
> 1] pri Repaint (Redraw) statusbaru pockat na vertical retrace
> 2] nastavit statusbar tak, aby se ocerstvoval jen pri synchro retrace a 
>    zmeny, ktere byly mezi tim zahodit.
> 
>   Zkusil jsem (1), nasel jsem si v PCGPE blocek assembleru, ktery cte z
> portu 
> videokarty (in 0x3D0, nebo tak nejak). To mi pod NTckama (a XPckama, kde
> jsem 
> to mezitim vyskousel) hodi Exception::EPrivilege. To je v pohode - catchnu
> to 
> a sychro vypnu, ale pak to zase blika jak das.
>   Na (2) jsem v helpu Builderu nenarazil.
> 
>   Resil jste uz nekdo podobny problem? A jak to dopadlo? :-)

Hledat vertical retrace je trochu paranoidni. ;-) A ze ti to spadlo na 
EPrivilege je uplne normalni.
Myslim, ze se to vetsinou resi tak, ze se to nakresli na jiny canvas (ten neni 
videt) a pak se to zkopiruje pres BitBlt s flagem SRCCOPY do toho ciloveho. 
Druha vec je, ze bys to pres timer mohl vyresit tak, aby to prekresloval jenom 
1x za urcitou dobu. Kdyz tam das desetinu nebo pulku vteriny, tak by to zas 
tak moc blikat nemuselo, ne? 

Dzemen

Search the boards