1 | Index:ÿqwindowsurface_pm.cpp |
---|
2 | =================================================================== |
---|
3 | ---ÿqwindowsurface_pm.cppÿÿÿÿ(revisionÿ741) |
---|
4 | +++ÿqwindowsurface_pm.cppÿÿÿÿ(workingÿcopy) |
---|
5 | @@ÿ-293,10ÿ+293,8ÿ@@ |
---|
6 | ÿ//ÿotherwiseÿitÿisÿguaranteedÿthatÿtheÿreturnedÿvalueÿisÿacceptedÿby |
---|
7 | ÿ//ÿfourccToFormat().ÿIfÿisFBÿisÿtrue,ÿtheÿselectionÿisÿmadeÿforÿtheÿdirect |
---|
8 | ÿ//ÿframebufferÿaccessÿmode. |
---|
9 | -staticÿFOURCCÿfourccScreenToBuffer(FOURCCÿfourcc,ÿboolÿisFBÿ=ÿfalse) |
---|
10 | +staticÿFOURCCÿfourccScreenToBuffer(FOURCCÿfourcc,ÿboolÿisFB) |
---|
11 | ÿ{ |
---|
12 | -ÿÿÿÿQ_UNUSED(isFB); |
---|
13 | - |
---|
14 | ÿÿÿÿÿ//ÿreturnÿitÿasÿisÿifÿsupportedÿbyÿfourccToFormat() |
---|
15 | ÿÿÿÿÿifÿ(fourccToFormat(fourcc)ÿ!=ÿQImage::Format_Invalid) |
---|
16 | ÿÿÿÿÿÿÿÿÿreturnÿfourcc; |
---|
17 | @@ÿ-335,6ÿ+333,7ÿ@@ |
---|
18 | ÿÿÿÿÿboolÿinDrag; |
---|
19 | ÿÿÿÿÿSETUP_BLITTERÿsetup; |
---|
20 | ÿÿÿÿÿQVector<RECTL>ÿrcls; |
---|
21 | +ÿÿÿÿintÿwindowHeight; |
---|
22 | ÿ |
---|
23 | ÿÿÿÿÿstructÿFlushArgs |
---|
24 | ÿÿÿÿÿ{ |
---|
25 | @@ÿ-355,12ÿ+354,13ÿ@@ |
---|
26 | ÿÿÿÿÿd->vrnDirtyÿ=ÿtrue; |
---|
27 | ÿÿÿÿÿd->vrnDisabledÿ=ÿfalse; |
---|
28 | ÿÿÿÿÿd->inDragÿ=ÿfalse; |
---|
29 | +ÿÿÿÿd->windowHeightÿ=ÿ0; |
---|
30 | ÿ |
---|
31 | ÿÿÿÿÿmemset(&d->setup,ÿ0,ÿsizeof(SETUP_BLITTER)); |
---|
32 | ÿ |
---|
33 | ÿÿÿÿÿ//ÿnoteÿthatÿfccSrcColorFormatÿoverridesÿtheÿvalueÿspecifiedÿduringÿthe |
---|
34 | ÿÿÿÿÿ//ÿsourceÿbufferÿcreation,ÿsoÿtheyÿmustÿmatch |
---|
35 | -ÿÿÿÿd->setup.fccSrcColorFormatÿ=ÿfourccScreenToBuffer(diveCaps.fccColorEncoding); |
---|
36 | +ÿÿÿÿd->setup.fccSrcColorFormatÿ=ÿfourccScreenToBuffer(diveCaps.fccColorEncoding,ÿfalse); |
---|
37 | ÿÿÿÿÿd->setup.fccDstColorFormatÿ=ÿFOURCC_SCRN; |
---|
38 | ÿ |
---|
39 | ÿÿÿÿÿwindow()->addPmEventFilter(this); |
---|
40 | @@ÿ-510,8ÿ+510,12ÿ@@ |
---|
41 | ÿÿÿÿÿÿÿÿÿGpiDestroyRegion(hps,ÿhrgn); |
---|
42 | ÿÿÿÿÿÿÿÿÿwindow()->releasePS(hps); |
---|
43 | ÿ |
---|
44 | +ÿÿÿÿÿÿÿÿd->windowHeightÿ=ÿwindow()->height(); |
---|
45 | + |
---|
46 | ÿ#ifÿdefined(QDIVE_DEBUG) |
---|
47 | -ÿÿÿÿÿÿÿÿDEBUG(()ÿ<<ÿ"QPMDiveWindowSurface::adjustSetup:"ÿ<<ÿ"vrnDirty"); |
---|
48 | +ÿÿÿÿÿÿÿÿDEBUG(()ÿ<<ÿ"QPMDiveWindowSurface::adjustSetup:"ÿ<<ÿ"vrnDirty" |
---|
49 | +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ"windowWidth:"ÿ<<ÿwindow()->width() |
---|
50 | +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ"windowHeight:"ÿ<<ÿwindow()->height()); |
---|
51 | ÿÿÿÿÿÿÿÿÿforÿ(size_tÿiÿ=ÿ0;ÿiÿ<ÿd->setup.ulNumDstRects;ÿ++i) |
---|
52 | ÿÿÿÿÿÿÿÿÿÿÿÿÿDEBUG(()ÿ<<ÿ"ÿ"ÿ<<ÿiÿ<<ÿ":"ÿ<<ÿd->setup.pVisDstRects[i]); |
---|
53 | ÿ#endif |
---|
54 | @@ÿ-635,7ÿ+639,8ÿ@@ |
---|
55 | ÿ |
---|
56 | ÿÿÿÿÿÿÿÿÿifÿ(!d->useFB)ÿ{ |
---|
57 | ÿÿÿÿÿÿÿÿÿÿÿÿÿ//ÿassociateÿtheÿimageÿdataÿpointerÿwithÿtheÿbufferÿnumber |
---|
58 | -ÿÿÿÿÿÿÿÿÿÿÿÿDiveFreeImageBuffer(d->hDive,ÿd->bufNum); |
---|
59 | +ÿÿÿÿÿÿÿÿÿÿÿÿifÿ(d->bufNum) |
---|
60 | +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDiveFreeImageBuffer(d->hDive,ÿd->bufNum); |
---|
61 | ÿÿÿÿÿÿÿÿÿÿÿÿÿd->bufNumÿ=ÿ0; |
---|
62 | ÿÿÿÿÿÿÿÿÿÿÿÿÿULONGÿrcÿ=ÿDiveAllocImageBuffer(d->hDive,ÿ&d->bufNum, |
---|
63 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿd->setup.fccSrcColorFormat, |
---|
64 | @@ÿ-767,7ÿ+772,7ÿ@@ |
---|
65 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&diveCaps.fccColorEncoding)[2] |
---|
66 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&diveCaps.fccColorEncoding)[3]); |
---|
67 | ÿ |
---|
68 | -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFOURCCÿbestBufFormatÿ=ÿfourccScreenToBuffer(diveCaps.fccColorEncoding); |
---|
69 | +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFOURCCÿbestBufFormatÿ=ÿfourccScreenToBuffer(diveCaps.fccColorEncoding,ÿdiveUseFB); |
---|
70 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDEBUG(()ÿ<<ÿ"bestBufFormat" |
---|
71 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&bestBufFormat)[0] |
---|
72 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&bestBufFormat)[1] |
---|
73 | @@ÿ-834,7ÿ+839,7ÿ@@ |
---|
74 | ÿ |
---|
75 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿifÿ(!diveUseFB)ÿ{ |
---|
76 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFOURCCÿbestBufFormatÿ= |
---|
77 | -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfourccScreenToBuffer(diveCaps.fccColorEncoding); |
---|
78 | +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfourccScreenToBuffer(diveCaps.fccColorEncoding,ÿfalse); |
---|
79 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDEBUG(()ÿ<<ÿ"bestBufFormat" |
---|
80 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&bestBufFormat)[0] |
---|
81 | ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<<ÿ((char*)&bestBufFormat)[1] |
---|
82 | @@ÿ-900,6ÿ+905,7ÿ@@ |
---|
83 | ÿÿÿÿÿ:ÿQPMDiveWindowSurface(widget) |
---|
84 | ÿ{ |
---|
85 | ÿÿÿÿÿd->useFBÿ=ÿtrue; |
---|
86 | +ÿÿÿÿd->setup.fccSrcColorFormatÿ=ÿfourccScreenToBuffer(diveCaps.fccColorEncoding,ÿtrue); |
---|
87 | ÿ} |
---|
88 | ÿ |
---|
89 | ÿQPMDiveWindowSurfaceFB::~QPMDiveWindowSurfaceFB() |
---|
90 | @@ÿ-920,13ÿ+926,16ÿ@@ |
---|
91 | ÿÿÿÿÿ//ÿconvertÿtheÿ"to"ÿcoordinateÿtoÿtheÿdelta |
---|
92 | ÿÿÿÿÿQPointÿdstDeltaÿ=ÿfrom.topLeft()ÿ-ÿto; |
---|
93 | ÿ |
---|
94 | +ÿÿÿÿconstÿintÿwindowHeightÿ=ÿwindow()->height(); |
---|
95 | + |
---|
96 | +ÿÿÿÿifÿ(windowHeightÿ!=ÿd->windowHeight) |
---|
97 | +ÿÿÿÿÿÿÿÿd->vrnDirtyÿ=ÿtrue; |
---|
98 | + |
---|
99 | ÿÿÿÿÿboolÿwasPosDirtyÿ=ÿd->posDirty; |
---|
100 | ÿÿÿÿÿboolÿwasVrnDirtyÿ=ÿd->vrnDirty; |
---|
101 | ÿ |
---|
102 | ÿÿÿÿÿadjustSetup(); |
---|
103 | ÿ |
---|
104 | -ÿÿÿÿconstÿintÿwindowHeightÿ=ÿwindow()->height(); |
---|
105 | - |
---|
106 | ÿÿÿÿÿifÿ(wasVrnDirty)ÿ{ |
---|
107 | ÿÿÿÿÿÿÿÿÿ//ÿflipÿtheÿyÿcoordinateÿofÿallÿrectanglesÿ(bothÿtheÿimageÿandÿtheÿframe |
---|
108 | ÿÿÿÿÿÿÿÿÿ//ÿbufferÿareÿtop-leftÿoriented)ÿandÿalsoÿmakeÿallÿpointsÿinclusive |
---|