> Simon Marlow wrote:
> >
> > oops, ignore the last patch. A better (read: tested) fix
> is attached.
hmmm, looks like my checked-out copy of hdirect was stuck in a time-warp.
Even better patch attached.
begin 600 hdirect.patch
M9&EF9B`M8R`M8R`M<C$N.3,@0V]D94=E;BYL:',**BHJ($-O9&5'96XN;&AS
M"3$Y.3DO,#8O,30@,38Z,S@Z-3(),2XY,PHM+2T@0V]D94=E;BYL:',),3DY
M.2\P-B\R-2`Q-3HQ,#HP-PHJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#0V-"PT.#4@
M*BHJ*@H@("`@("`@('1R86-E("@B26=N;W)I;F<@*&)I;F%R>2D@:6YT97)F
M86-E.B`B*RL@<VAO=R!I9F%C95]N86UE*2`D"B`@("`@("`@<F5T=7)N(&5M
M<'1Y1&5C;`H@("`@(&5L<V4@9&\*(2`@('-E=$EN=&5R9F%C949L86<@:69A
M8V5?:VEN9"`D(&1O"B$@("!S971)16YU;49L86<@:7-?:65N=6T@("`@("`@
M)"!D;PHA("`@<V5T365T:&]D3G5M8F5R('-T87)T3V9F<V5T"B$@("!B;V1Y
M(#PM(&UA<$T@8V]'96X@9&5C;',*(2`@('5D("`@/"T@"B$@("`@("!I9B!O
M<'1/;F5-;V1U;&5097));G1E<F9A8V4@)B8@;F]T("AN=6QL(&1E<',I('1H
M96X@9&\*("`);&5T('1Y7VUO9%]N;2`](&ED3F%M92!I9E]N;2`K*R`B5'DB
M"B`@("`@("`@("!A9&16:71A;$5X<&]R="`H:65-;V1U;&4@='E?;6]D7VYM
M*0H@("`@("`@("`@=VAE;B`H;W!T3F]%>'!O<G1,:7-T*2`H861D5FET86Q%
M>'!O<G0@*&EE36]D=6QE("AI9$YA;64@:69?;FTI*2D*("`)861D17AP;&EC
M:71);7!O<G1S(%LH1F%L<V4L('1Y7VUO9%]N;2E="B`@"7)E='5R;B!E;7!T
M>41E8VP*(2`@("`@("!E;'-E(&1O"B`@("`@("`@("!D(#PM('5U:61$96-L
M(&EF7VYM(&EN:"!):60*("`)<F5T=7)N("@@:6YF;TAE861E<B`H26YT97)F
M86-E(&EF7VYM($9A;'-E(&EN:&5R:70@9&5C;',I(&!A;F1$96-L8`H@(`D)
M(&0I"B$@("!R971U<FX@*&%N9$1E8VQS("AU9#IB;V1Y*2D*("`@=VAE<F4*
M("`@("!I9F%C95]N86UE(#T@:61.86UE(&EF7VYM"B`@"BTM+2`T-C0L-#@U
M("TM+2T*("`@("`@("!T<F%C92`H(DEG;F]R:6YG("AB:6YA<GDI(&EN=&5R
M9F%C93H@(BLK('-H;W<@:69A8V5?;F%M92D@)`H@("`@("`@(')E='5R;B!E
M;7!T>41E8VP*("`@("!E;'-E(&1O"B$@("`@<V5T26YT97)F86-E1FQA9R!I
M9F%C95]K:6YD("0@9&\*(2`@("`@<V5T245N=6U&;&%G(&ES7VEE;G5M("`@
M("`@("0@9&\*(2`@("`@('-E=$UE=&AO9$YU;6)E<B!S=&%R=$]F9G-E=`HA
M("`@("`@8F]D>2`\+2!M87!-(&-O1V5N(&1E8VQS"B$@("`@("!U9"`@(#PM
M(`HA("`@("`@(&EF(&]P=$]N94UO9'5L95!E<DEN=&5R9F%C92`F)B!N;W0@
M*&YU;&P@9&5P<RD@=&AE;B!D;PH@(`EL970@='E?;6]D7VYM(#T@:61.86UE
M(&EF7VYM("LK(")4>2(*("`@("`@("`@(&%D9%9I=&%L17AP;W)T("AI94UO
M9'5L92!T>5]M;V1?;FTI"B`@("`@("`@("!W:&5N("AO<'1.;T5X<&]R=$QI
M<W0I("AA9&16:71A;$5X<&]R="`H:65-;V1U;&4@*&ED3F%M92!I9E]N;2DI
M*0H@(`EA9&1%>'!L:6-I=$EM<&]R=',@6RA&86QS92P@='E?;6]D7VYM*5T*
M("`)<F5T=7)N(&5M<'1Y1&5C;`HA("`@("`@("!E;'-E(&1O"B`@("`@("`@
M("!D(#PM('5U:61$96-L(&EF7VYM(&EN:"!):60*("`)<F5T=7)N("@@:6YF
M;TAE861E<B`H26YT97)F86-E(&EF7VYM($9A;'-E(&EN:&5R:70@9&5C;',I
M(&!A;F1$96-L8`H@(`D)(&0I"B$@("`@("!R971U<FX@*&%N9$1E8VQS("AU
M9#IB;V1Y*2D*("`@=VAE<F4*("`@("!I9F%C95]N86UE(#T@:61.86UE(&EF
M7VYM"B`@"BHJ*BHJ*BHJ*BHJ*BHJ*@HJ*BH@-S,R+#<U-2`J*BHJ"B`@("`@
M(&ES7W-R8R`@(#PM(&=E=%-O=7)C94EF86-E1FQA9PH@("`@("!L970@:7-?
M<V]U<F-E(#T@:7-?<W)C('Q\(&AA<U-O=7)C94%T=')I8G5T92`H:61!='1R
M:6)U=&5S(&DI"B`@("`@('-E=%-O=7)C94EF86-E1FQA9R!I<U]S;W5R8V4@
M)"!D;PHA("`@("!F;W)#;&EE;G0@/"T@9V5T0VQI96YT1FQA9PHA("`@("!B
M;V1Y(#PM(&UA<$T@8V=$96-L("AP<F]P<R`K*R!M971H<RD*(2`@("`@=60@
M("`\+2!U=6ED1&5C;"!I(%LH:41I<W!A=&-H+#<I72!):60*(2`@("`@:68@
M:7-?<V]U<F-E("8F(&]P=$EG;F]R95-O=7)C94EF86-E<R!T:&5N"B`@("`@
M("`@("!R971U<FX@*&EN9F](96%D97(@*$1I<W!);G1E<F9A8V4@:2!I:2!P
M<F]P<R!M971H<RD@8&%N9$1E8VQ@('5D*0HA("`@("`@96QS92!D;PH@("`@
M("`@>RT*("`@("`@("!)="!M87D@;&]O:R!A(&)I="!F=6YN>2!T;R!G96YE
M<F%T92!A(%940DP@9F]R(&$*("`@("`@("!D:7-P:6YT97)F86-E('-E<G9E
M<B!T;V\L(&)U="!T:&%T)W,@:&]W('=E(&EM<&QE;65N=`H@("`@("`@("=E
M;2X@5&AE('1Y<&4@;&EB<F%R>2!B87-E9"!)1&ES<&%T8V@@;6%R<VAA;&QE
M<B!N965D<R!T;PH@("`@("`@(&)E('!A<W-E9"!A(&UE=&AO9"!T86)L92X*
M("`@("`@("U]"B$@("`@("`@=G1B;"`\+2`*("`@("`@("`@("AI9B`H9F]R
M0VQI96YT("8F(&YO="!I<U]S;W5R8V4I('Q\("AN;W0@9F]R0VQI96YT("8F
M(&ES7W-O=7)C92D@=&AE;@H@("`@("`@("`@("`@(')E='5R;B!E;7!T>41E
M8VP*("`@("`@("`@("!E;'-E"B`@("`@("`@("`@("`@;6M397)V5E1"3"!I
M(&ES7W-O=7)C92`H<')O<',@*RL@;65T:',I*0HA("`@("`@(')E='5R;B`H
M:6YF;TAE861E<B`H1&ES<$EN=&5R9F%C92!I(&EI('!R;W!S(&UE=&AS*2!@
M86YD1&5C;&`*("`@("`@("`@("`@("`@('5D"0D)"2`@("`@("`@("!@86YD
M1&5C;&`*("`)("`@("`@=G1B;`D)"0D@("`@("`@("`@8&%N9$1E8VQ@"B`@
M("`@("`@("`@("`@("!A;F1$96-L<R!B;V1Y"BTM+2`W,S(L-S4U("TM+2T*
M("`@("`@:7-?<W)C("`@/"T@9V5T4V]U<F-E269A8V5&;&%G"B`@("`@(&QE
M="!I<U]S;W5R8V4@/2!I<U]S<F,@?'P@:&%S4V]U<F-E071T<FEB=71E("AI
M9$%T=')I8G5T97,@:2D*("`@("`@<V5T4V]U<F-E269A8V5&;&%G(&ES7W-O
M=7)C92`D(&1O"B$@("`@("!F;W)#;&EE;G0@/"T@9V5T0VQI96YT1FQA9PHA
M("`@("`@8F]D>2`\+2!M87!-(&-G1&5C;"`H<')O<',@*RL@;65T:',I"B$@
M("`@("!U9"`@(#PM('5U:61$96-L(&D@6RAI1&ES<&%T8V@L-RE=($EI9`HA
M("`@("`@:68@:7-?<V]U<F-E("8F(&]P=$EG;F]R95-O=7)C94EF86-E<R!T
M:&5N"B`@("`@("`@("!R971U<FX@*&EN9F](96%D97(@*$1I<W!);G1E<F9A
M8V4@:2!I:2!P<F]P<R!M971H<RD@8&%N9$1E8VQ@('5D*0HA("`@("`@(&5L
M<V4@9&\*("`@("`@('LM"B`@("`@("`@270@;6%Y(&QO;VL@82!B:70@9G5N
M;GD@=&\@9V5N97)A=&4@82!65$),(&9O<B!A"B`@("`@("`@9&ES<&EN=&5R
M9F%C92!S97)V97(@=&]O+"!B=70@=&AA="=S(&AO=R!W92!I;7!L96UE;G0*
M("`@("`@("`G96TN(%1H92!T>7!E(&QI8G)A<GD@8F%S960@241I<W!A=&-H
M(&UA<G-H86QL97(@;F5E9',@=&\*("`@("`@("!B92!P87-S960@82!M971H
M;V0@=&%B;&4N"B`@("`@("`M?0HA("`@("`@("!V=&)L(#PM(`H@("`@("`@
M("`@*&EF("AF;W)#;&EE;G0@)B8@;F]T(&ES7W-O=7)C92D@?'P@*&YO="!F
M;W)#;&EE;G0@)B8@:7-?<V]U<F-E*2!T:&5N"B`@("`@("`@("`@("`@<F5T
M=7)N(&5M<'1Y1&5C;`H@("`@("`@("`@(&5L<V4*("`@("`@("`@("`@("!M
M:U-E<G965$),(&D@:7-?<V]U<F-E("AP<F]P<R`K*R!M971H<RDI"B$@("`@
M("`@(')E='5R;B`H:6YF;TAE861E<B`H1&ES<$EN=&5R9F%C92!I(&EI('!R
M;W!S(&UE=&AS*2!@86YD1&5C;&`*("`@("`@("`@("`@("`@('5D"0D)"2`@
M("`@("`@("!@86YD1&5C;&`*("`)("`@("`@=G1B;`D)"0D@("`@("`@("`@
M8&%N9$1E8VQ@"B`@("`@("`@("`@("`@("!A;F1$96-L<R!B;V1Y"BHJ*BHJ
M*BHJ*BHJ*BHJ*@HJ*[email protected]@Y+#$P,#(@*BHJ*@H@("`@("`@(&ES1'5A;"`]
M("AI9$%T=')I8G5T97,@:69A8V5?;FTI(&!H87-!='1R:6)U=&57:71H3F%M
M96`@(F1U86PB"B`@"B`@("!S971);G1E<F9A8V5&;&%G(&EF86-E7VMI;F0@
M)"!D;PHA("`@<V5T245N=6U&;&%G(&ES7VEE;G5M("`@("`@("0@9&\*(2`@
M('-E=$EF86-E3F%M92!I9F%C95]N86UE("`@("`D(&1O"B$@("!I<U]S<F,@
M/"T@9V5T4V]U<F-E269A8V5&;&%G"B$@("!S971-971H;V1.=6UB97(@<W1A
M<G1/9F9S970*(2`@(&)O9'D@/"T@;6%P32!C;T=E;B!D96-L<PHA("`@=60@
M("`\+2!U=6ED1&5C;"!I9F%C95]N;2!I;FAE<FET($EI9`HA("`@=G1B;"`\
M+2!M:U-E<G965$),(&EF86-E7VYM("AI<U]S<F,@)B8@:7-?:61I<W!A=&-H
M*2!D96-L<PHA("`@<F5T=7)N("AI;F9O2&5A9&5R("A);G1E<F9A8V4@:69A
M8V5?;FT@1F%L<V4@:6YH97)I="!D96-L<RD@8&%N9$1E8VQ@"B`@("`@("`@
M("`@('5D"0D)"0D)("`@("`@8&%N9$1E8VQ@"B`@"2`@=G1B;`D)"0D)"2`@
M("`@(&!A;F1$96-L8`H@("`@("`@("`@("!A;F1$96-L<R!B;V1Y*0HM+2T@
M.3@Y+#$P,#(@+2TM+0H@("`@("`@(&ES1'5A;"`]("AI9$%T=')I8G5T97,@
M:69A8V5?;FTI(&!H87-!='1R:6)U=&57:71H3F%M96`@(F1U86PB"B`@"B`@
M("!S971);G1E<F9A8V5&;&%G(&EF86-E7VMI;F0@)"!D;PHA("`@('-E=$E%
M;G5M1FQA9R!I<U]I96YU;2`@("`@("`D(&1O"B$@("`@('-E=$EF86-E3F%M
M92!I9F%C95]N86UE("`@("`D(&1O"B$@("`@("!I<U]S<F,@/"T@9V5T4V]U
M<F-E269A8V5&;&%G"B$@("`@("!S971-971H;V1.=6UB97(@<W1A<G1/9F9S
M970*(2`@("`@(&)O9'D@/"T@;6%P32!C;T=E;B!D96-L<PHA("`@("`@=60@
M("`\+2!U=6ED1&5C;"!I9F%C95]N;2!I;FAE<FET($EI9`HA("`@("`@=G1B
M;"`\+2!M:U-E<G965$),(&EF86-E7VYM("AI<U]S<F,@)B8@:7-?:61I<W!A
M=&-H*2!D96-L<PHA("`@("`@<F5T=7)N("AI;F9O2&5A9&5R("A);G1E<F9A
M8V4@:69A8V5?;FT@1F%L<V4@:6YH97)I="!D96-L<RD@8&%N9$1E8VQ@"B`@
M("`@("`@("`@('5D"0D)"0D)("`@("`@8&%N9$1E8VQ@"B`@"2`@=G1B;`D)
M"0D)"2`@("`@(&!A;F1$96-L8`H@("`@("`@("`@("!A;F1$96-L<R!B;V1Y
"*0H=
`
end