MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / UpdatePointer

Method UpdatePointer

rEFIt_UEFI/libeg/XPointer.cpp:127–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127VOID XPointer::UpdatePointer(bool daylight)
128{
129 UINT64 Now;
130 EFI_STATUS Status;
131 EFI_SIMPLE_POINTER_STATE tmpState;
132 EFI_SIMPLE_POINTER_MODE *CurrentMode;
133 INTN ScreenRelX;
134 INTN ScreenRelY;
135
136 night = !daylight;
137
138 // Now = gRT->GetTime(&Now, NULL);
139 Now = AsmReadTsc();
140 Status = SimplePointerProtocol->GetState(SimplePointerProtocol, &tmpState);
141 if (!EFI_ERROR(Status)) {
142 if (!State.LeftButton && tmpState.LeftButton) // press left
143 MouseEvent = LeftMouseDown;
144 else if (!State.RightButton && tmpState.RightButton) // press right
145 MouseEvent = RightMouseDown;
146 else if (State.LeftButton && !tmpState.LeftButton) { //release left
147 // time for double click 500ms into menu
148 if (TimeDiff(LastClickTime, Now) < gSettings.DoubleClickTime)
149 MouseEvent = DoubleClick;
150 else
151 MouseEvent = LeftClick;
152 LastClickTime = Now;
153 }
154 else if (State.RightButton && !tmpState.RightButton) //release right
155 MouseEvent = RightClick;
156 else if (State.RelativeMovementZ > 0)
157 MouseEvent = ScrollDown;
158 else if (State.RelativeMovementZ < 0)
159 MouseEvent = ScrollUp;
160 else if (State.RelativeMovementX || State.RelativeMovementY)
161 MouseEvent = MouseMove;
162 else
163 MouseEvent = NoEvents;
164
165 CopyMem(&State, &tmpState, sizeof(State));
166 CurrentMode = SimplePointerProtocol->Mode;
167
168 ScreenRelX = (UGAWidth * State.RelativeMovementX * gSettings.PointerSpeed / (INTN)CurrentMode->ResolutionX) >> 10;
169 if (gSettings.PointerMirror) {
170 newPlace.XPos -= ScreenRelX;
171 }
172 else {
173 newPlace.XPos += ScreenRelX;
174 }
175 if (newPlace.XPos < 0) newPlace.XPos = 0;
176 if (newPlace.XPos > UGAWidth - 1) newPlace.XPos = UGAWidth - 1;
177
178 // YPosPrev = newPlace.YPos;
179 ScreenRelY = (UGAHeight * State.RelativeMovementY * gSettings.PointerSpeed / (INTN)CurrentMode->ResolutionY) >> 10;
180 newPlace.YPos += ScreenRelY;
181 if (newPlace.YPos < 0) newPlace.YPos = 0;
182 if (newPlace.YPos > UGAHeight - 1) newPlace.YPos = UGAHeight - 1;
183
184 if ( oldPlace != newPlace ) {

Callers 1

WaitForInputEventPollMethod · 0.80

Calls 4

TimeDiffFunction · 0.85
GetStateMethod · 0.80
AsmReadTscFunction · 0.50
CopyMemFunction · 0.50

Tested by

no test coverage detected