Check in changes to core files used for tests

* 12to11.c (XLMain): Initialize tests.
* 12to11.conf (WAYLAND_CLIENT, PNG): New libraries
(BuildTests): New define.
* Imakefile: Add the ability to build tests in a subdirectory.
* compositor.c (HandleResourceDestroy, HandleBind): Remove
unused list.
* compositor.h (enum _RoleType): Add TestSurfaceType.
* run.c (HandleOneXEvent): Handle events for test surfaces.
* xdg_surface.c (FreeRecords): Cancel idle callback if
necessary.
(BufferIdleCallback): Remove extra whitespace.
(XLGetXdgSurface): Fix coding style.
This commit is contained in:
hujianwei 2022-11-04 02:39:50 +00:00
parent 4e9a442856
commit 2230f5e406
7 changed files with 57 additions and 82 deletions

View file

@ -245,6 +245,7 @@ XLMain (int argc, char **argv)
XLInitKeyboardShortcutsInhibit ();
XLInitIdleInhibit ();
XLInitPointerGestures ();
XLInitTest ();
/* This has to come after the rest of the initialization. */
DetermineServerTime ();

View file

@ -17,6 +17,13 @@
WAYLAND_SCANNER = wayland-scanner
XSHMFENCELIB = -lxshmfence
/* The following libraries are used for tests. */
WAYLAND_CLIENT = -lwayland-client
PNG = -lpng
XCOMM #define BuildTests
/* Uncomment the following code if building with EGL support. */
XCOMM #define HaveEglSupport

View file

@ -4,47 +4,30 @@
#error "Posix threads are required"
#endif
SYS_LIBRARIES = MathLibrary ThreadsLibraries
DEPLIBS = $(DEPXLIB) $(DEPEXTENSIONLIB) $(DEPXRANDRLIB) $(DEPXRENDERLIB) \
$(DEPXFIXESLIB) $(DEPXILIB) $(DEPXKBFILELIB)
SYS_LIBRARIES = MathLibrary ThreadsLibraries
DEPLIBS = $(DEPXLIB) $(DEPEXTENSIONLIB) $(DEPXRANDRLIB) $(DEPXRENDERLIB) $(DEPXFIXESLIB) $(DEPXILIB) $(DEPXKBFILELIB)
LOCAL_LIBRARIES = $(XLIB) $(EXTENSIONLIB) $(XCBLIB) $(XCB) $(XCB_SHM) $(XRANDRLIB) $(PIXMAN) $(XRENDERLIB) $(XILIB) $(XKBFILELIB) $(XFIXESLIB) $(XCB_DRI3) $(XCB_SHAPE) $(WAYLAND_SERVER) $(XCB_RANDR) $(DRM) $(XPRESENTLIB) $(XSHMFENCELIB)
INCLUDES := $(DRMINCLUDES) $(PIXMANINCLUDES)
LOCAL_LIBRARIES = $(XLIB) $(EXTENSIONLIB) $(XCBLIB) $(XCB) $(XCB_SHM) \
$(XRANDRLIB) $(PIXMAN) $(XRENDERLIB) $(XILIB) $(XKBFILELIB) $(XFIXESLIB) \
$(XCB_DRI3) $(XCB_SHAPE) $(WAYLAND_SERVER) $(XCB_RANDR) $(DRM) \
$(XPRESENTLIB) $(XSHMFENCELIB)
#ifdef BuildTests
# define IHaveSubdirs
# define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
SUBDIRS = tests
INCLUDES := $(DRMINCLUDES) $(PIXMANINCLUDES)
MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))
#endif
SRCS = 12to11.c run.c alloc.c fns.c output.c compositor.c \
surface.c region.c shm.c atoms.c subcompositor.c positioner.c \
xdg_wm.c xdg_surface.c xdg_toplevel.c frame_clock.c xerror.c \
ewmh.c timer.c subsurface.c seat.c data_device.c xdg_popup.c \
dmabuf.c buffer.c select.c xdata.c xsettings.c dnd.c \
icon_surface.c primary_selection.c renderer.c \
picture_renderer.c explicit_synchronization.c transform.c \
wp_viewporter.c decoration.c text_input.c \
single_pixel_buffer.c drm_lease.c pointer_constraints.c \
time.c relative_pointer.c keyboard_shortcuts_inhibit.c \
idle_inhibit.c process.c fence_ring.c pointer_gestures.c
OBJS = 12to11.o run.o alloc.o fns.o output.o compositor.o \
surface.o region.o shm.o atoms.o subcompositor.o positioner.o \
xdg_wm.o xdg_surface.o xdg_toplevel.o frame_clock.o xerror.o \
ewmh.o timer.o subsurface.o seat.o data_device.o xdg_popup.o \
dmabuf.o buffer.o select.o xdata.o xsettings.o dnd.o \
icon_surface.o primary_selection.o renderer.o \
picture_renderer.o explicit_synchronization.o transform.o \
wp_viewporter.o decoration.o text_input.o \
single_pixel_buffer.o drm_lease.o pointer_constraints.o \
time.o relative_pointer.o keyboard_shortcuts_inhibit.o \
idle_inhibit.o process.o fence_ring.o pointer_gestures.o
GENHEADERS = transfer_atoms.h drm_modifiers.h
SRCS = 12to11.c run.c alloc.c fns.c output.c compositor.c surface.c region.c shm.c atoms.c subcompositor.c positioner.c xdg_wm.c xdg_surface.c xdg_toplevel.c frame_clock.c xerror.c ewmh.c timer.c subsurface.c seat.c data_device.c xdg_popup.c dmabuf.c buffer.c select.c xdata.c xsettings.c dnd.c icon_surface.c primary_selection.c renderer.c picture_renderer.c explicit_synchronization.c transform.c wp_viewporter.c decoration.c text_input.c single_pixel_buffer.c drm_lease.c pointer_constraints.c time.c relative_pointer.c keyboard_shortcuts_inhibit.c idle_inhibit.c process.c fence_ring.c pointer_gestures.c test.c buffer_release.c
OBJS = 12to11.o run.o alloc.o fns.o output.o compositor.o surface.o region.o shm.o atoms.o subcompositor.o positioner.o xdg_wm.o xdg_surface.o xdg_toplevel.o frame_clock.o xerror.o ewmh.o timer.o subsurface.o seat.o data_device.o xdg_popup.o dmabuf.o buffer.o select.o xdata.o xsettings.o dnd.o icon_surface.o primary_selection.o renderer.o picture_renderer.o explicit_synchronization.o transform.o wp_viewporter.o decoration.o text_input.o single_pixel_buffer.o drm_lease.o pointer_constraints.o time.o relative_pointer.o keyboard_shortcuts_inhibit.o idle_inhibit.o process.o fence_ring.o pointer_gestures.o test.o buffer_release.o
GENHEADERS = transfer_atoms.h drm_modifiers.h
HEADER = $(GENHEADERS) compositor.h
EXTRA_DEFINES := -D_GNU_SOURCE -U_BSD_SOURCE -U_SVID_SOURCE
#ifdef HaveEglSupport
EGL_SRCS = egl.c
EGL_OBJS = egl.o
EGL_SRCS = egl.c
EGL_OBJS = egl.o
LOCAL_LIBRARIES ::= $(LOCAL_LIBRARIES) $(EGL) $(GLES)
SRCS ::= $(SRCS) $(EGL_SRCS)
OBJS ::= $(OBJS) $(EGL_OBJS)
@ -62,27 +45,9 @@ cleandir::
#endif
OPTIMIZE = -O0
ANALYZE = -fanalyzer
CDEBUGFLAGS := -fno-common -Wall -Warith-conversion -Wdate-time \
-Wdisabled-optimization -Wdouble-promotion -Wduplicated-cond \
-Wextra -Wformat-signedness -Winit-self -Winvalid-pch \
-Wlogical-op -Wmissing-declarations -Wmissing-include-dirs \
-Wmissing-prototypes -Wnested-externs -Wnull-dereference \
-Wold-style-definition -Wopenmp-simd -Wpacked -Wpointer-arith \
-Wstrict-prototypes -Wsuggest-attribute=format \
-Wsuggest-attribute=noreturn -Wsuggest-final-methods \
-Wsuggest-final-types -Wuninitialized -Wunknown-pragmas \
-Wunused-macros -Wvariadic-macros \
-Wvector-operation-performance -Wwrite-strings \
-Warray-bounds=2 -Wattribute-alias=2 -Wformat=2 \
-Wformat-truncation=2 -Wimplicit-fallthrough=5 \
-Wshift-overflow=2 -Wuse-after-free=3 -Wvla-larger-than=4031 \
-Wredundant-decls -Wno-missing-field-initializers \
-Wno-override-init -Wno-sign-compare -Wno-type-limits \
-Wno-unused-parameter -Wno-format-nonliteral -g3 $(OPTIMIZE) \
$(ANALYZE)
OPTIMIZE = -O0
ANALYZE = -fanalyzer
CDEBUGFLAGS := -fno-common -Wall -Warith-conversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Wduplicated-cond -Wextra -Wformat-signedness -Winit-self -Winvalid-pch -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wnull-dereference -Wold-style-definition -Wopenmp-simd -Wpacked -Wpointer-arith -Wstrict-prototypes -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wsuggest-final-methods -Wsuggest-final-types -Wuninitialized -Wunknown-pragmas -Wunused-macros -Wvariadic-macros -Wvector-operation-performance -Wwrite-strings -Warray-bounds=2 -Wattribute-alias=2 -Wformat=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wshift-overflow=2 -Wuse-after-free=3 -Wvla-larger-than=4031 -Wredundant-decls -Wno-missing-field-initializers -Wno-override-init -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-format-nonliteral -g3 $(OPTIMIZE) $(ANALYZE)
short_types.txt: media_types.txt
XCOMM Remove all data types starting with application/vnd.
@ -129,6 +94,7 @@ ScannerTarget(relative-pointer-unstable-v1)
ScannerTarget(keyboard-shortcuts-inhibit-unstable-v1)
ScannerTarget(idle-inhibit-unstable-v1)
ScannerTarget(pointer-gestures-unstable-v1)
ScannerTarget(12to11-test)
/* Make OBJS depend on scanner headers, and depend on both them and SRCS. */
$(OBJS): $(GENHEADERS)
@ -140,18 +106,12 @@ depend:: $(GENHEADERS) $(SRCS)
cleandir::
$(RM) $(GENHEADERS) $(GENSRCS) short_types.txt 12to11.tar.gz
/* Undefine _BSD_SOURCE and _SVID_SOURCE, since both are deprecated
and are also superseeded by _GNU_SOURCE. */
EXTRA_DEFINES := -D_GNU_SOURCE -U_BSD_SOURCE -U_SVID_SOURCE
ComplexProgramTarget(12to11)
.PHONY: dist
dist: 12to11.tar.gz
DIST_FILES = Imakefile $(SRCS) media_types.txt shaders.txt *.awk *.xml \
12to11.man README libraries.def *.h
DIST_FILES = Imakefile $(SRCS) media_types.txt shaders.txt *.awk *.xml 12to11.man README libraries.def *.h
/* Include files generated by wayland-scanner, so the target does not
need to have it installed. */

View file

@ -19,9 +19,6 @@ along with 12to11. If not, see <https://www.gnu.org/licenses/>. */
#include "compositor.h"
/* List of all resources for our compositor global. */
static XLList *all_compositors;
/* The compositor global. */
static struct wl_global *global_compositor;
@ -41,12 +38,6 @@ CreateRegion (struct wl_client *client,
XLCreateRegion (client, resource, id);
}
static void
HandleResourceDestroy (struct wl_resource *resource)
{
all_compositors = XLListRemove (all_compositors, resource);
}
static const struct wl_compositor_interface wl_compositor_impl =
{
.create_surface = CreateSurface,
@ -69,8 +60,7 @@ HandleBind (struct wl_client *client, void *data,
}
wl_resource_set_implementation (resource, &wl_compositor_impl,
NULL, HandleResourceDestroy);
all_compositors = XLListPrepend (all_compositors, resource);
NULL, NULL);
}
void

View file

@ -875,6 +875,7 @@ enum _RoleType
XdgType,
CursorType,
DndIconType,
TestSurfaceType,
};
#define RotatesDimensions(transform) \
@ -1795,6 +1796,22 @@ extern XSyncFence FenceToXFence (Fence *);
extern void XLInitPointerGestures (void);
/* Defined in test.c. */
extern void XLInitTest (void);
extern Bool XLHandleOneXEventForTest (XEvent *);
/* Defined in buffer_release.c. */
typedef void (*AllReleasedCallback) (void *);
typedef struct _BufferReleaseHelper BufferReleaseHelper;
extern BufferReleaseHelper *MakeBufferReleaseHelper (AllReleasedCallback,
void *);
extern void FreeBufferReleaseHelper (BufferReleaseHelper *);
extern void ReleaseBufferWithHelper (BufferReleaseHelper *, ExtBuffer *,
RenderTarget);
/* Utility functions that don't belong in a specific file. */
#define ArrayElements(arr) (sizeof (arr) / sizeof (arr)[0])

8
run.c
View file

@ -154,11 +154,6 @@ HandleOneXEvent (XEvent *event)
if (XLHandleOneXEventForIconSurfaces (event))
return;
#if 0
if (XLHandleOneXEventForDmabuf (event))
return;
#endif
if (XLHandleOneXEventForXData (event))
return;
@ -170,6 +165,9 @@ HandleOneXEvent (XEvent *event)
if (HandleOneXEventForTime (event))
return;
if (XLHandleOneXEventForTest (event))
return;
}
static void

View file

@ -223,6 +223,10 @@ FreeRecords (ReleaseLaterRecord *records)
last = tem;
tem = tem->next;
/* Cancel the idle callback if it already exists. */
if (last->key)
RenderCancelIdleCallback (last->key);
/* Release the buffer now. */
XLReleaseBuffer (last->buffer);
@ -360,7 +364,6 @@ BufferIdleCallback (RenderBuffer buffer, void *data)
record = data;
role = record->role;
XLReleaseBuffer (record->buffer);
DeleteRecord (record);
@ -1574,8 +1577,7 @@ XLGetXdgSurface (struct wl_client *client, struct wl_resource *resource,
attrs.border_pixel = border_pixel;
attrs.event_mask = DefaultEventMask;
attrs.cursor = InitDefaultCursor ();
flags = (CWColormap | CWBorderPixel | CWEventMask
| CWCursor);
flags = CWColormap | CWBorderPixel | CWEventMask | CWCursor;
/* Sentinel node. */
role->release_records->next = role->release_records;