Commit graph

164 commits

Author SHA1 Message Date
hujianwei
e7b89cec3b Fix crashes during scale changes
* compositor.h (struct _XdgRoleImplementationFuncs): New
function `rescale'.
* subsurface.c (Rescale): If the parent has been detached, don't
call MoveFractional.
* xdg_surface.c (Rescale): Call rescale hook.
* xdg_toplevel.c (SendOutputBounds): Check that some fields are
present.  Scale geometry correctly.
(Rescale): New function.
(ShowWindowMenu): Scale coordinates correctly.
(XLGetXdgToplevel): Add Rescale hook.
2022-11-15 12:17:26 +00:00
hujianwei
62a055983c * tests/subsurface_test_39.dump: New file. 2022-11-15 05:01:13 +00:00
hujianwei
ad9d1c3d6a Add new test for role actions
* subcompositor.c (ViewSetSubcompositor):
* subsurface.c (Teardown, XLSubsurfaceParentDestroyed):
* surface.c (HandleSurfaceDestroy): Restore previous code with
more comments.

* tests/subsurface_test.c (test_single_step): Test that surface
actions work with unconfirmed subsurfaces.
2022-11-15 05:00:56 +00:00
hujianwei
dfb8378257 Check in new files for subsurface tests
* tests/subsurface_stack_1.png:
* tests/subsurface_stack_2.png:
* tests/subsurface_test_35.dump:
* tests/subsurface_test_36.dump:
* tests/subsurface_test_37.dump:
* tests/subsurface_test_38.dump: New files.
2022-11-15 04:27:18 +00:00
hujianwei
e8b746e7ec Update subsurface tests to handle reparenting and fix discovered bugs
* 12to11-test.xml (test_manager) <set_buffer_label>: New
request.
* 12to11.man:
* README: Add missing documentation.
* buffer.c (ExtBufferDestroy): Free buffer label.
* compositor.h (struct _ExtBuffer): New field `label'
* linux-dmabuf-unstable-v1.xml: Update from wayland-protocols.
* subcompositor.c (IsSkipped, SetSkipped, ClearSkipped): Delete
macros.
(SubcompositorUpdateBounds, SubcompositorUpdateBoundsForInsert)
(SkipSlug): Adjust accordingly.
(DamageIncludingInferiors): Fix function.
(SubcompositorInsert, SubcompositorInsertBefore)
(SubcompositorInsertAfter, ViewIsVisible, ViewRecomputeChildren)
(ViewInsert, ViewInsertAfter, ViewInsertBefore): Call
DamageIncludingInferiors on child, not view.
(ViewSetSubcompositor, ViewAfterSizeUpdate, ViewMove): Get rid
of "skipped" state.
(ViewUnskip, ViewSkip): delete functions.
(ViewFree, DoCull, SubcompositorLookupView): Get rid of
"skipped" state.
* subsurface.c (struct _Subsurface): New field `pending'.
(AfterParentCommit): Attach views whenever pending.
(Setup): Stop attaching views upon setup.
(Teardown): Only detach views when not pending.
(GetSubsurface): Add comment.
(XLSubsurfaceParentDestroyed): Set subcompositor to NULL when
parent is destroyed.
(XLSubsurfaceHandleParentCommit): New function.
* surface.c (RunCommitCallbacks): Run commit callbacks in the
order in which they were created.
(NotifySubsurfaceDestroyed): Assert that a role is present.
(HandleSurfaceDestroy): Clear subsurfaces before releasing role.
Set subsurfaces to NULL.
* test.c (SetBufferLabel): New function.
(test_manager_impl): Implement.
* tests/subsurface_test.c (enum test_kind): New
SUBSURFACE_REPARENT_KIND.
(test_names): Add names
(LAST_TEST): Set to SUBSURFACE_REPARENT_KIND.
(test_single_step): Implement new test.
* tests/test_harness.c (load_png_image): Set buffer debug label.
2022-11-15 04:26:36 +00:00
hujianwei
7919b65eca Fix xdg-positioner implementation
* compositor.h (struct _Positioner): New struct.
* positioner.c (struct _Positioner): Move to compositor.h.
(RetainPositioner, ReleasePositioner): Remove functions.
(HandleResourceDestroy): Destroy positioner instead.
(XLCreateXdgPositioner): Remove reference-counting logic.
(XLRetainPositioner, XLReleasePositioner): Delete functions.
(XLPositionerIsReactive): Delete function.
* xdg_popup.c (struct _XdgPopup): Make positioner a struct
instead of a pointer.
(DestroyBacking, InternalReposition, Reposition)
(HandleParentConfigure, HandleParentResize, XLGetXdgPopup): Copy
positioner instead of taking a reference.
2022-11-14 10:26:58 +00:00
hujianwei
d32e9cbf8a Remove extra debugging code
* xdg_toplevel.c (Activate): Remove left-over debug code.
2022-11-14 06:53:16 +00:00
hujianwei
2979979633 Implement xdg-activation-v1
* 12to11-test.xml (test_surface): <activated>: New event.
* 12to11.c (XLMain): Initialize XDG activation.
* Imakefile (SRCS, OBJS): Add xdg_activation.c and
xdg_activation.o.
(xdg-activation-v1): New scanner target.
* atoms.c (names, XLInitAtoms): New atom `_NET_ACTIVE_WINDOW'.
Adjust accordingly.
* compositor.h (struct _RoleFuncs): New function `activate'.
(struct _XdgRoleImplementationFuncs): Likewise.
* seat.c (XLSeatCheckActivationSerial): New function.
* test.c (Activate): New function.
(GetTestSurface): Attach new hook.
* tests/Imakefile (OBJS13, SRCS13): Add xdg_activation_test.c/o.
(xdg-activation-v1): New scanner target.
(PROGRAMS): Add xdg_activation_test.
(xdg_activation_test): New program target.
* tests/run_tests.sh (standard_tests): Add xdg_activation_test.
* tests/svnignore.txt: Add xdg_activation_test.
* xdg_surface.c (Activate): New function.
(XLGetXdgSurface): Attach hook.
* xdg_toplevel.c (Activate): New function.
(XLGetXdgToplevel): Attach hook.
2022-11-14 06:05:23 +00:00
hujianwei
556cf6dbcc Check in new files for xdg-activation
* xdg-activation-v1.xml:
* xdg_activation.c:
* tests/xdg_activation_test:
* tests/xdg_activation_test.c: New files.
2022-11-14 05:58:00 +00:00
hujianwei
a3e87a1f34 Fix built-in resize with new frame clock logic
* compositor.h (struct _XdgRoleImplementationFuncs): Replace
`commit_inside_frame' with `after_commit'.
* xdg_surface.c (Commit): Call after_commit hook.
(NoteFrame): Stop calling commit_inside_frame.

* xdg_toplevel.c (CommitInsideFrame): Remove function.
(AfterCommit): New function.  Post pending resize here instead.
(XLGetXdgToplevel): Attach after_commit hook.
2022-11-14 01:42:01 +00:00
hujianwei
ecac908923 Fix some comments
* drm_lease.c:
* subcompositor.c (ViewUnparent):
* xdata.c (NoticeTransferWritable): Remove obsolete TODO
comments.
2022-11-14 01:12:49 +00:00
hujianwei
30f22613b8 Fix some minor problems
* seat.c (DispatchEntryExit): Understand all kinds of entry and
exit events instead of just non-grab ones.
* subcompositor.c (SubcompositorComposite1): Remove redundant
assignment.
* xerror.c (CategorizeClients): Add new assertion.

* tests/select_test.c (verify_sample_text):
(verify_sample_text_multiple): Fix typos.
2022-11-13 13:45:11 +00:00
hujianwei
563422d8cf Improve handling of pointer unlock events
* compositor.h: Update prototypes.
* idle_inhibit.c (DestroyIdleInhibitManager): New function.
(idle_inhibit_manager_impl): Add missing op handler.
* seat.c (struct _Seat): Remove pointer unlock surface.  Add
last_seen_subcompositor.
(ReleaseSeat): Release the last seen subcompositor callback.
(ClearPointerUnlockSurface, SwapUnlockSurface): Delete
functions.
(HandleSubcompositorDestroy): New function.
(EnteredSurface): Stop calling SwapUnlockSurface.
(DispatchEntryExit): Set the last seen subcompositor.
(DispatchMotion, CancelGrab1, CancelGrab): Use the last seen
subcompositor to decide where to unlock instead.
(LockSurfaceFocus, DispatchButton, DispatchGesturePinch)
(DispatchGestureSwipe): Stop calling SwapUnlockSurface.
(FakePointerEdge, ForceEntry): Stop calling SwapUnlockSurface.

* subcompositor.c (struct _SubcompositorDestroyCallback): New
struct.
(struct _Subcompositor): New field `destroy_callbacks'.
(MakeSubcompositor): Initialize new field.
(SubcompositorFree): Run and free destroy callbacks.
(SubcompositorOnDestroy, SubcompositorRemoveDestroyCallback):
New functions.
* tests/run_tests.sh:
* tests/select_test.c (verify_sample_text_multiple): Fix
ommissions and typos.
2022-11-13 11:18:44 +00:00
hujianwei
b54e5a1a01 * tests/select_helper.c: Make atom_names big enough. 2022-11-13 05:46:38 +00:00
hujianwei
3244ab82f2 Track keyboard modifiers on a per-seat basis
* seat.c (MakeSeatForDevicePair): Get keyboard state and select
for events from the master keyboard.
(UpdateModifiersForSeats): Rename to UpdateModifierForSeat.
Accept seat arg.
(SetupKeymap): Stop selecting for state changes here.
(HandleXkbEvent): Associate each XkbStateNotify with an
extension device's keyboard.
2022-11-13 03:00:08 +00:00
hujianwei
442f80b667 Implement support for multiple providers
* README: Document changes.
* compositor.h (struct _BufferFuncs): Rename `get_render_device'
to `get_render_devices' and make it return a list of providers.
* dmabuf.c (MakeFeedback): Send 1 tranche for each device.
(InitDrmDevice): Rename to InitDrmDevices.  Set up for multiple
devices.
(WriteFormatTable): Adjust call accordingly.

* egl.c (GetRenderDevice): Remove function.
(GetRenderDevices): New function.
(egl_buffer_funcs): Change accordingly.

* output.c (XLInitRROutputs): Require RandR 1.4.

* picture_renderer.c (GetRenderDevice): Remove calls to open.
(GetRenderDevices): New function.
(picture_buffer_funcs): Adjust accordingly.

* renderer.c (RenderGetRenderDevice): Delete function.
(RenderGetRenderDevices): New function.
2022-11-13 02:08:10 +00:00
hujianwei
b022f0dbd9 Fix handling of MULTIPLE selections and add test
* select.c (SignalConversionPerformed): Improve diagnostic
messages.
(ConvertSelectionMultiple): Use correct atoms.
(HandleSelectionRequest): Allow selection requests with target
MULTIPLE.

* tests/Imakefile (SRCS12, OBJS12): Add select_helper_multiple.c
and .o.
(PROGRAMS): Add select_helper_multiple.
(select_helper_multiple): New program.
* tests/select_helper.c (main): Fix typo.

* tests/select_test.c (verify_sample_text_multiple): New function.
(test_single_step): Call it.
* tests/svnignore.txt: Add select_helper_multiple.
2022-11-12 08:07:43 +00:00
hujianwei
8810afbe2d Check in new file for select tests
* tests/select_helper_multiple.c: New file.
2022-11-12 08:04:52 +00:00
hujianwei
456537aee9 * tests/run_test.sh: Allow running select tests. 2022-11-12 05:23:31 +00:00
hujianwei
0bdc502068 Fix text input bugs with grabbed popups and bugs found by new tests
* 12to11-test.xml (test_manager) <error>: Add
invalid_user_time.
<get_serial, serial> New request and event.
(test_seat_controller) <set_last_user_time>: New request.

* compositor.h (struct _TextInputFuncs): Make `filter_input'
return keycode.
* data_device.c (DestroyReference): Check if reference device is
detached before unlinking reference.
* seat.c (LookupKeysym): Delete function.
(DispatchKey): Use keycodes instead.
(XLSeatExplicitlyGrabSurface): Avoid using owner-events keyboard
grab.

* select.c (struct _SelectionOwnerInfo, HandleSelectionRequest):
Allow CurrentTime in selection requests.  Compensate for
wraparound as well.
(OwnSelection, DisownSelection): Use Timestamp instead of Time.
* test.c (GetSerial): New function.
(test_manager_impl): Add new function.
* test_seat.c (SetLastUserTime): New function.
(seat_controller_impl): Add new function.
* tests/Imakefile (LOCAL_LIBRARIES): Remove GBM and DRM.
(SRCS10, OBJS10, SRCS11, OBJS11): New variables.
(dmabuf_test): Only link this program with GBM and DRM.
(PROGRAMS): Add select_test, select_helper.
(select_test, select_helper): New programs.

* tests/README: Document that select_test needs to be run under
vfb.
* tests/run_tests.sh: Add TODO note.
* tests/svnignore.txt: Add select_test and select_helper.
* tests/test_harness.c (handle_test_manager_serial): New
function.
(test_manager_listener): Add new function.
(open_test_display): Clear display->seat.
(test_get_serial): New function.

* tests/test_harness.h (struct test_display): New function
`serial'.

* text_input.c (CreateIC): Improve debugging code.
(CalculateKeycodeForEvent): Move earlier.
(FilterInputCallback): Handle keycodes here as well.
(XLTextInputDispatchCoreEvent): Add more debugging code.

* xdata.c (SelectSelectionInput): Obtain server time here.
(XLOwnDragSelection, NoteLocalSelectionFooter): Convert times to
Timestamp.
2022-11-12 03:51:21 +00:00
hujianwei
be955e3c79 Check in new files for selection tests
* tests/select_helper.c:
* tests/select_test.c: New files.
2022-11-12 03:42:39 +00:00
hujianwei
be117ac93d Improve serial wraparound checking
* data_device.c (SetSelection):
* primary_selection.c (SetSelection): Handle selection serial
wraparound.
2022-11-11 11:16:01 +00:00
hujianwei
c90af69ecd Fix key release tracking for input methods
* compositor.h: Update prototypes.
* seat.c (XLSeatDispatchCoreKeyEvent): Remove argument `keysym'.
Stop handling keysyms here.
(XLKeysymToKeycode): New function.
* text_input.c (struct _KeysymMap): Rename to KeycodeMap.
(struct _TextInput, ClearKeysymMap, InsertKeysym, RemoveKeysym)
(GetKeysym, GetKeycode, InputDoLeave, HandleResourceDestroy)
(ScanForwardWord, ScanBackwardWord, CalculateKeycodeForEvent)
(XLTextInputDispatchCoreEvent, InitInputStyles): Calculate
keycodes instead of passing the keysym to DispatchCoreKeyEvent
here, and record the keycodes used instead.
2022-11-11 02:12:14 +00:00
hujianwei
18d18aabb5 Remove broken tests in subcompositor.c
These tests have already been superseeded by the more
comprehensive tests in subsurface_tests.c (and to a lesser
extent under tests/*.c in general), and do not build anymore.

* subcompositor.c (TEST_STATIC): Remove define.
(IsTargetAttached, ClearPreviouslyTransformed, struct _View)
(struct _Subcompositor, MakeSubcompositor, MakeView)
(SubcompositorInsert, SubcompositorInsertBefore)
(SubcompositorInsertAfter, ViewInsert, ViewInsertAfter)
(ViewInsertBefore, ViewInsertStart, ViewUnparent)
(ViewSetSubcompositor, PrintView, PrintSubcompositor, TestView)
(TestSubcompositor, main): Delete all code under #ifdef TEST.
2022-11-10 12:36:09 +00:00
hujianwei
bf568311a6 Improve handling of keysyms returned by input methods
* text_input.c (struct _KeysymMap): New struct.
(struct _TextInput): New field `keysym_map'.
(ClearKeysymMap, InsertKeysym, RemoveKeysym, GetKeysym): New
function.
(InputDoLeave, HandleResourceDestroy): Clear the keysym map.
(NoticeLeave): Fix coding style.
(LookupString): Always prefer keysyms looked up.
(XLTextInputDispatchCoreEvent): Store keysym into map upon
KeyPress under the keycode, and use that keysym with the
corresponding KeyRelease.
2022-11-10 12:12:53 +00:00
hujianwei
163dca96bd Add scroll valuator tests
* 12to11-test.xml (test_manager): <error>: New errors.
(test_XIDeviceInfo, test_device_controller): New interfaces.
(test_seat_controller): <get_device_controller>: New request.
<device_id>: New event.

* seat.c (NoticeDeviceDisabled): Ignore test seats.
(XLSeatDispatchCoreKeyEvent): Expand commentary.

* test_seat.c (struct _TestDeviceController)
(struct _TestXIDeviceInfo): New structs.
(DestroyXIValuatorState): New function.
(AddValuatorToTestXIValuatorState): Fix crashes.
(XIValuatorState_impl): Add DestroyXIValuatorState.
(DestroyDeviceInfo, SetDeviceId, SetName, SetUse, SetAttachment)
(SetEnabled, AddXIScrollClassInfo, AddXIValuatorClassInfo): New
functions.
(XIDeviceInfo_impl): New interface implementation.
(HandleXIDeviceInfoDestroy): New function.
(DestroyDeviceController, AddDeviceInfo, GetDeviceInfo): New
functions.
(device_controller_impl): New interface.
(HandleTestDeviceControllerDestroy): New function.
(GetDeviceController): New function.
(seat_controller_impl): Add it.
(XLGetTestSeat): Send new `device_id' event.

* tests/seat_test.c (enum test_expect_event_kind): Add
POINTER_AXIS_VALUE120_EVENT.
(struct test_recorded_axis_value120_event): New event kind.
(enum test_kind): Add TEST_VALUATOR_KIND.
(test_names): Add test_valuator.
(LAST_TEST): Set to TEST_VALUATOR_KIND.
(run_valuator_test): New function.
(test_single_step): Implement accordingly.
(expect_axis_value120_event, handle_pointer_axis_value120): New
functions.

* tests/test_harness.c (handle_seat_controller_device_id): New
function.
(seat_controller_listener): New listener.
(test_init_seat): Wait for device ID and init device controller.

* tests/test_harness.h (struct test_seat): Add device controller
and device ID fields.
2022-11-10 06:14:51 +00:00
hujianwei
e2afe671df ; * xerror.c (CategorizeClients): Remove debugging code. 2022-11-09 02:55:20 +00:00
hujianwei
45df6087d6 Update dmabuf and seat tests
* tests/dmabuf_test.c (enum test_kind): Add XBGR888_KIND.
(test_names): Add that test.
(LAST_TEST): Set to XBGR888_KIND.
(verify_single_step, test_single_step, test_next_step):
Implement that test, but keep it disabled for now.
* tests/seat_test.c (struct test_subsurface): New struct.
(enum test_kind): Add TEST_GRAB_KIND.
(test_names): Add that test kind.
(LAST_TEST): Set to TEST_GRAB_KIND.
(make_test_subsurface): New function.
(run_grab_test): New functions.
(test_single_step): Implement new test.
(expect_enter_event): Accept surface arg.
(expect_surface_enter): Adjust accordingly.
(handle_wl_callback_done, wait_frame_callback): New functions.
2022-11-09 02:12:28 +00:00
hujianwei
9e7af2fe4c * tests/seat_child.png: New file. 2022-11-09 02:09:53 +00:00
hujianwei
83435c37b9 * 12to11.conf (GBM): Add variable. 2022-11-08 11:53:47 +00:00
hujianwei
a8297024f1 Add dma-buf tests
* tests/Imakefile (LOCAL_LIBRARIES): Require libgbm and libdrm.
(OBJS9, SRCS9): Add dmabuf_test.c/.o.
(PROGRAMS): Add dmabuf_test.
(dmabuf_test): New program.
* tests/run_tests.sh: Add dmabuf_test.
* tests/seat_test.c (handle_pointer_enter, handle_pointer_leave)
(handle_pointer_motion): Pacify some GCC warnings.
* tests/svnignore.txt: Add dmabuf_test.
* tests/test_harness.h: Include sys/types.h.
2022-11-08 11:53:25 +00:00
hujianwei
ec30b855b6 Check in new files for dma-buf tests
* tests/argb8888_implicit.dump:
* tests/argb8888_linear.dump:
* tests/dmabuf_test.c: New files.
2022-11-08 11:50:09 +00:00
hujianwei
b0815b0b8c Fix initialization of server time overflow timer
* time.c (StartAlarms): Fix comment.  Initialize overflow timer
A with negative delta.
2022-11-08 11:49:43 +00:00
hujianwei
f4194133f9 Better handle X server out-of-memory situations
* compositor.h (struct _RenderFuncs): Add function `set_client'.
(struct _ClientErrorData): New struct.
* icon_surface.c (XLGetIconSurface): Attach client to render
target.
* picture_renderer.c (struct _BackBuffer): Keep track of how
many pixels were allocated.
(struct _PictureTarget): Keep track of the client data.
(SetClient): New function.
(FreeBackBuffer, FreeBackBuffers, CreateBackBuffer)
(SetStandardEventMask, NoteTargetSize, DestroyRenderTarget)
(picture_render_funcs): Keep track of the number of pixels
allocated on behalf of each client.
* renderer.c (RenderSetClient): New function.
* run.c (RunStep): Disconnect clients pending disconnect.
* shm.c (InitRender): Export the render error base.
* test.c (GetTestSurface):
* xdg_surface.c (XLGetXdgSurface): Attach the client to the
render target.
* xerror.c (enum _ClientMemoryCategory): New enum.
(ReleaseClientData, HandleClientDestroy, ErrorDataForClient)
(CategorizeClients, SavePendingDisconnectClient)
(DisconnectOneClient, ProcessPendingDisconnectClients)
(HandleBadAlloc): New functions.
(ErrorHandler): Handle BadAlloc errors by disconnecting pixmap
hogs.
2022-11-08 03:37:37 +00:00
hujianwei
801eee5464 Check in new subsurface test reference data
* tests/subsurface_1_complex.png:
* tests/subsurface_test_30.dump:
* tests/subsurface_test_31.dump:
* tests/subsurface_test_32.dump:
* tests/subsurface_test_33.dump:
* tests/subsurface_test_34.dump:
* tests/subsurface_transparency_damage.png: New files.
2022-11-07 12:02:30 +00:00
hujianwei
7e9ba17e88 Add subsurface scaling and damage simplification tests
* subcompositor.c (IsDamageComplicated): Consider 10 rects as
complex damage.
* surface.c (ApplyScale): Don't dereference subsurface list data
as role.
* tests/subsurface_test.c (enum test_kind, test_names): Add
complex damage and scaling tests.
(LAST_TEST): Set to SUBSURFACE_SCALE_KIND.
(test_single_step): Implement new tests.
2022-11-07 12:01:52 +00:00
hujianwei
b487cbe320 Add button press and grab test
* tests/seat_test.c (enum test_expect_event_kind): Add leave and
button events.
(struct test_expect_data): Remove structure.
(struct test_recorded_event): New structure.
(struct test_recorded_leave_event)
(struct test_recorded_button_event)
(struct test_recorded_frame_event)
(struct test_recorded_enter_event)
(struct test_recorded_motion_event): New structures.  Replace
old event verification mechanism with a mechanism for recording
events sent from the pointer device. and verifying them later.
(enum test_kind, test_names): Add TEST_CLICK_KIND.
(LAST_TEST): Set to TEST_CLICK_KIND.
(num_listener_data, current_listener_data): Remove variables.
(recording_events, record_tail): New variables.
(run_click_test, test_single_step): Implement new kind of test.
(record_events, expect_button_event, expect_frame_event)
(expect_enter_event, expect_motion_event, expect_leave_event)
(expect_button_event, expect_no_events): New functions for
recording and inspecting input events.
(expect_surface_enter, expect_surface_motion): Reimplement in
terms of those functions.
(get_next_expect_data): Delete function.
(handle_pointer_enter, handle_pointer_leave, handle_pointer_motion)
(handle_pointer_button, handle_pointer_frame): Record events
instead of matching them against a list of verified events.
2022-11-07 10:23:12 +00:00
hujianwei
13a399bd35 * tests/seat_test.c (get_next_expect_data): Remove unused field. 2022-11-07 06:21:46 +00:00
hujianwei
686f71c3b4 Add seat testing mechanism and tests for seats
* 12to11-test.xml (test_manager): <error>: Add `invalid_button',
`value_exists', `bad_seat_version' and `invalid_valuator'.
(test_manager): <get_test_seat>: New request.
(test_XIButtonState, test_XIModifierState, test_XIValuatorState)
(test_seat_controller): New interfaces.
* Imakefile: (seat.o): Depend on test_seat.c.
* compositor.h: Update prototypes.
* run.c (XLRunCompositor): Get rid of stdbool constant.
* seat.c (HandleBind1): Move binding logic to this new function.
(HandleBind): Call HandleBind1.
(InitSeatCommon): Add list initialization to this function.
(MakeSeatForDevicePair): Call InitSeatCommon instead.
(HandleRawKey, UpdateModifiersForSeats, DispatchFocusIn)
(DispatchMotion, DispatchBarrierHit, DispatchGesturePinch)
(DispatchGestureSwipe): Do not update user time from send_event
events.  Include test_seat.c.
* test.c (GetTestSeat): New function.
(test_manager_impl): Add new proc function.
(XLLookUpTestSurface): New function.
* tests/Imakefile (OBJS8, SRCS8): New program.
(PROGRAMS): Add seat_test.
(seat_test): New function.
* tests/run_tests.sh (standard_tests): Add seat_test.
* tests/svnignore.txt: Add seat_test.
* tests/test_harness.c (report_test_internal_error,
test_init_seat): New functions.
* tests/test_harness.h (struct test_seat): New struct.
(struct test_display): New field `seat'.
2022-11-07 06:21:07 +00:00
hujianwei
ef456e4d24 Check in new files for seat tests
* test_seat.c:
* tests/seat_test.c:
* tests/seat_test.png: New files.
2022-11-07 06:05:08 +00:00
hujianwei
0042259e28 Check in new test dumps
* tests/subsurface_test_28.dump:
* tests/subsurface_test_29.dump: New files.
2022-11-06 05:10:28 +00:00
hujianwei
3dcceb506b Fix subsurface commit behavior
* subsurface.c (EarlyCommit): Clear pending_commit after merging
cached state.
* tests/subsurface_test.c (test_single_step): Add test that
found this problem.
2022-11-06 05:09:57 +00:00
hujianwei
769827921f Use precomputed width and height in ViewMaxX/ViewMaxY
* subcompositor.c (ViewMaxX):
(ViewMaxY): Use precomputed dimensions.
(ViewMove): Fix typo in comment.
2022-11-06 03:38:48 +00:00
hujianwei
3ed01b13b7 Check in new subsurface test reference data
* tests/subsurface_test_20.dump:
* tests/subsurface_test_21.dump:
* tests/subsurface_test_22.dump:
* tests/subsurface_test_23.dump:
* tests/subsurface_test_24.dump:
* tests/subsurface_test_25.dump:
* tests/subsurface_test_26.dump:
* tests/subsurface_test_27.dump: New files.
2022-11-06 03:22:18 +00:00
hujianwei
e73914d7dd Correctly implement nested subsurface sync or desync
* compositor.h (struct _RoleFuncs): Get rid of note_desync_child
and co.
* frame_clock.c (StartFrame): Fix typo.
* subsurface.c (struct _Subsurface): New field
`should_be_desync'.
(NoteDesyncChild, NoteChildSynced): Delete functions.
(IsParentSynchronous): New function.
(SetSync1, NoteSubsurfaceDesynchronous, NoteSubsurfaceTeardown):
New functions.
(SetSync): Make all children synchronous when required.
(SetDesync): Desynchronize all children if possible; otherwise,
keep the surface synchronous but set the `should_be_desync'
flag.
(EarlyCommit): Merge pending state if required.
(Setup): Call SetSync1 to make children synchronous.
(Teardown): Call NoteSubsurfaceTeardown to make children
desynchronous as required.
(GetSubsurface): Stop setting
note_child_synced/note_desync_child.

* surface.c (InternalCommit1): New function.
(InternalCommit): Move state merging logic to InternalCommit1.
(XLSurfaceMergeCachedState): New function.

* xdg_surface.c (struct _XdgRole): Remove `n_desync_children'.
(UpdateFrameRefreshPrediction): Resort to counting the number of
children on each frame instead.
(Setup, NoteFrame, NoteChildSynced, NoteDesyncChild, HandleFreeze)
(XLGetXdgSurface): Stop counting sync/desync children.

* tests/subsurface_test.c (enum test_kind, test_names): Add
SUBSURFACE_DESYNC_KIND.
(LAST_TEST): Set to SUBSURFACE_DESYNC_KIND.
(test_single_step): Implement SUBSURFACE_DESYNC_KIND.
2022-11-06 03:21:27 +00:00
hujianwei
e5fe4380eb ; * Imakefile: Fix typo. 2022-11-06 00:53:00 +00:00
hujianwei
55cae69aa1 Add some initial wrapping for ports
* Imakefile (EXTRA_DEFINES, DEPEND_DEFINES, ANALYZE, OPTIMIZE):
Make port and compiler specific.
* compositor.h: Update compiler-specific defines.
* fns.c (PortPopcount): New function.
* seat.c (MaskPopCount): Use Popcount macro.
2022-11-05 13:31:32 +00:00
hujianwei
d17262c6ea * port_gnu.h: New file. 2022-11-05 13:29:25 +00:00
hujianwei
6f22495cd1 ; * 12to11.man (OPTIONS): Remove extraneous titled paragraph. 2022-11-05 12:28:13 +00:00
hujianwei
736aef224c Fix problems with test Imakefile
* tests/Imakefile (GENFILES): New variable.
(ScannerTarget): Append to GENFILES.
(depend): Only depend on COMMONSRCS.
(clean): Clean generated files.
2022-11-05 12:13:10 +00:00