From 0db457b2b5b6e314e912efc62f158f8f0b8d48af Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 8 Jul 2015 15:56:55 -0400 Subject: [PATCH 01/23] dmx: Fix the build Broken since: commit 4fd81823fafcd103e8d890f4c0f7c2f90e822336 Author: Dave Airlie Date: Tue Jun 30 14:54:42 2015 +1000 prime: add rotation support for offloaded outputs (v2) Signed-off-by: Adam Jackson --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 328563e6f..98d08216b 100644 --- a/configure.ac +++ b/configure.ac @@ -2268,7 +2268,7 @@ if test "x$DMX" = xyes; then fi DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC" XDMX_CFLAGS="$DMXMODULES_CFLAGS" - XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB" + XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB" XDMX_SYS_LIBS="$DMXMODULES_LIBS" AC_SUBST([XDMX_CFLAGS]) AC_SUBST([XDMX_LIBS]) From c732bb2799ad7ff6b0cdd9c65487466e6a9b76e7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 22 Oct 2014 10:31:29 -0400 Subject: [PATCH 02/23] present: static cleanup Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- present/present_event.c | 2 +- present/present_priv.h | 2 -- present/present_request.c | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/present/present_event.c b/present/present_event.c index d3a59ea25..c586c9a60 100644 --- a/present/present_event.c +++ b/present/present_event.c @@ -26,7 +26,7 @@ #include "present_priv.h" -RESTYPE present_event_type; +static RESTYPE present_event_type; static int present_free_event(void *data, XID id) diff --git a/present/present_priv.h b/present/present_priv.h index f5c1652d1..996292e94 100644 --- a/present/present_priv.h +++ b/present/present_priv.h @@ -147,8 +147,6 @@ present_window_priv(WindowPtr window) present_window_priv_ptr present_get_window_priv(WindowPtr window, Bool create); -extern RESTYPE present_event_type; - /* * present.c */ diff --git a/present/present_request.c b/present/present_request.c index 7c53e7262..35320b64e 100644 --- a/present/present_request.c +++ b/present/present_request.c @@ -234,7 +234,7 @@ proc_present_query_capabilities (ClientPtr client) return Success; } -int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = { proc_present_query_version, /* 0 */ proc_present_pixmap, /* 1 */ proc_present_notify_msc, /* 2 */ @@ -319,7 +319,7 @@ sproc_present_query_capabilities (ClientPtr client) return (*proc_present_vector[stuff->presentReqType]) (client); } -int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { +static int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = { sproc_present_query_version, /* 0 */ sproc_present_pixmap, /* 1 */ sproc_present_notify_msc, /* 2 */ From 91f0d71c18254746e1d519f0d19d11f756a9588c Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 22 Oct 2014 10:38:11 -0400 Subject: [PATCH 03/23] parser: static cleanup Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- hw/xfree86/parser/InputClass.c | 152 ++++++++++++++++---------------- hw/xfree86/parser/OutputClass.c | 52 +++++------ hw/xfree86/parser/Screen.c | 80 ++++++++--------- hw/xfree86/parser/Vendor.c | 32 +++---- hw/xfree86/parser/configProcs.h | 6 -- 5 files changed, 158 insertions(+), 164 deletions(-) diff --git a/hw/xfree86/parser/InputClass.c b/hw/xfree86/parser/InputClass.c index c2fbd22a7..29bd9fa64 100644 --- a/hw/xfree86/parser/InputClass.c +++ b/hw/xfree86/parser/InputClass.c @@ -58,6 +58,82 @@ xf86ConfigSymTabRec InputClassTab[] = { {-1, ""}, }; +static void +xf86freeInputClassList(XF86ConfInputClassPtr ptr) +{ + XF86ConfInputClassPtr prev; + + while (ptr) { + xf86MatchGroup *group, *next; + char **list; + + TestFree(ptr->identifier); + TestFree(ptr->driver); + + xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + + TestFree(ptr->comment); + xf86optionListFree(ptr->option_lst); + + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + #define CLEANUP xf86freeInputClassList #define TOKEN_SEP "|" @@ -354,79 +430,3 @@ xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr) ptr = ptr->list.next; } } - -void -xf86freeInputClassList(XF86ConfInputClassPtr ptr) -{ - XF86ConfInputClassPtr prev; - - while (ptr) { - xf86MatchGroup *group, *next; - char **list; - - TestFree(ptr->identifier); - TestFree(ptr->driver); - - xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - - TestFree(ptr->comment); - xf86optionListFree(ptr->option_lst); - - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} diff --git a/hw/xfree86/parser/OutputClass.c b/hw/xfree86/parser/OutputClass.c index 7e9a8ac1a..3f2082ecb 100644 --- a/hw/xfree86/parser/OutputClass.c +++ b/hw/xfree86/parser/OutputClass.c @@ -41,6 +41,32 @@ xf86ConfigSymTabRec OutputClassTab[] = { {-1, ""}, }; +static void +xf86freeOutputClassList(XF86ConfOutputClassPtr ptr) +{ + XF86ConfOutputClassPtr prev; + + while (ptr) { + xf86MatchGroup *group, *next; + char **list; + + TestFree(ptr->identifier); + TestFree(ptr->comment); + TestFree(ptr->driver); + + xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { + xorg_list_del(&group->entry); + for (list = group->values; *list; list++) + free(*list); + free(group); + } + + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + #define CLEANUP xf86freeOutputClassList #define TOKEN_SEP "|" @@ -139,29 +165,3 @@ xf86printOutputClassSection(FILE * cf, XF86ConfOutputClassPtr ptr) ptr = ptr->list.next; } } - -void -xf86freeOutputClassList(XF86ConfOutputClassPtr ptr) -{ - XF86ConfOutputClassPtr prev; - - while (ptr) { - xf86MatchGroup *group, *next; - char **list; - - TestFree(ptr->identifier); - TestFree(ptr->comment); - TestFree(ptr->driver); - - xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { - xorg_list_del(&group->entry); - for (list = group->values; *list; list++) - free(*list); - free(group); - } - - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} diff --git a/hw/xfree86/parser/Screen.c b/hw/xfree86/parser/Screen.c index b5b454ff4..47319706f 100644 --- a/hw/xfree86/parser/Screen.c +++ b/hw/xfree86/parser/Screen.c @@ -76,6 +76,33 @@ static xf86ConfigSymTabRec DisplayTab[] = { {-1, ""}, }; +static void +xf86freeModeList(XF86ModePtr ptr) +{ + XF86ModePtr prev; + + while (ptr) { + TestFree(ptr->mode_name); + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + +static void +xf86freeDisplayList(XF86ConfDisplayPtr ptr) +{ + XF86ConfDisplayPtr prev; + + while (ptr) { + xf86freeModeList(ptr->disp_mode_lst); + xf86optionListFree(ptr->disp_option_lst); + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + #define CLEANUP xf86freeDisplayList static XF86ConfDisplayPtr @@ -433,6 +460,19 @@ xf86printScreenSection(FILE * cf, XF86ConfScreenPtr ptr) } +static void +xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr) +{ + XF86ConfAdaptorLinkPtr prev; + + while (ptr) { + TestFree(ptr->al_adaptor_str); + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + void xf86freeScreenList(XF86ConfScreenPtr ptr) { @@ -454,46 +494,6 @@ xf86freeScreenList(XF86ConfScreenPtr ptr) } } -void -xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr) -{ - XF86ConfAdaptorLinkPtr prev; - - while (ptr) { - TestFree(ptr->al_adaptor_str); - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} - -void -xf86freeDisplayList(XF86ConfDisplayPtr ptr) -{ - XF86ConfDisplayPtr prev; - - while (ptr) { - xf86freeModeList(ptr->disp_mode_lst); - xf86optionListFree(ptr->disp_option_lst); - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} - -void -xf86freeModeList(XF86ModePtr ptr) -{ - XF86ModePtr prev; - - while (ptr) { - TestFree(ptr->mode_name); - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} - int xf86validateScreen(XF86ConfigPtr p) { diff --git a/hw/xfree86/parser/Vendor.c b/hw/xfree86/parser/Vendor.c index 4f6e510bb..f137a4eb9 100644 --- a/hw/xfree86/parser/Vendor.c +++ b/hw/xfree86/parser/Vendor.c @@ -68,6 +68,22 @@ static xf86ConfigSymTabRec VendorSubTab[] = { {-1, ""}, }; +static void +xf86freeVendorSubList(XF86ConfVendSubPtr ptr) +{ + XF86ConfVendSubPtr prev; + + while (ptr) { + TestFree(ptr->vs_identifier); + TestFree(ptr->vs_name); + TestFree(ptr->vs_comment); + xf86optionListFree(ptr->vs_option_lst); + prev = ptr; + ptr = ptr->list.next; + free(prev); + } +} + #define CLEANUP xf86freeVendorSubList static XF86ConfVendSubPtr @@ -215,19 +231,3 @@ xf86freeVendorList(XF86ConfVendorPtr p) xf86optionListFree(p->vnd_option_lst); free(p); } - -void -xf86freeVendorSubList(XF86ConfVendSubPtr ptr) -{ - XF86ConfVendSubPtr prev; - - while (ptr) { - TestFree(ptr->vs_identifier); - TestFree(ptr->vs_name); - TestFree(ptr->vs_comment); - xf86optionListFree(ptr->vs_option_lst); - prev = ptr; - ptr = ptr->list.next; - free(prev); - } -} diff --git a/hw/xfree86/parser/configProcs.h b/hw/xfree86/parser/configProcs.h index 774e2a2da..e6c231e2d 100644 --- a/hw/xfree86/parser/configProcs.h +++ b/hw/xfree86/parser/configProcs.h @@ -55,12 +55,10 @@ int xf86validateInput(XF86ConfigPtr p); /* InputClass.c */ XF86ConfInputClassPtr xf86parseInputClassSection(void); void xf86printInputClassSection(FILE * f, XF86ConfInputClassPtr ptr); -void xf86freeInputClassList(XF86ConfInputClassPtr ptr); /* OutputClass.c */ XF86ConfOutputClassPtr xf86parseOutputClassSection(void); void xf86printOutputClassSection(FILE * f, XF86ConfOutputClassPtr ptr); -void xf86freeOutputClassList(XF86ConfOutputClassPtr ptr); /* Layout.c */ XF86ConfLayoutPtr xf86parseLayoutSection(void); @@ -92,16 +90,12 @@ XF86ConfInputPtr xf86parsePointerSection(void); XF86ConfScreenPtr xf86parseScreenSection(void); void xf86printScreenSection(FILE * cf, XF86ConfScreenPtr ptr); extern _X_EXPORT void xf86freeScreenList(XF86ConfScreenPtr ptr); -void xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr); -void xf86freeDisplayList(XF86ConfDisplayPtr ptr); -void xf86freeModeList(XF86ModePtr ptr); int xf86validateScreen(XF86ConfigPtr p); /* Vendor.c */ XF86ConfVendorPtr xf86parseVendorSection(void); void xf86freeVendorList(XF86ConfVendorPtr p); void xf86printVendorSection(FILE * cf, XF86ConfVendorPtr ptr); -void xf86freeVendorSubList(XF86ConfVendSubPtr ptr); /* Video.c */ XF86ConfVideoAdaptorPtr xf86parseVideoAdaptorSection(void); From a69e9027e167a83281b96e13f3a77100876b72ae Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 22 Oct 2014 10:44:36 -0400 Subject: [PATCH 04/23] dri3: Remove unbuilt dri3_event.c The config notifies live in present, not dri3. Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- dri3/dri3_event.c | 163 ---------------------------------------------- 1 file changed, 163 deletions(-) delete mode 100644 dri3/dri3_event.c diff --git a/dri3/dri3_event.c b/dri3/dri3_event.c deleted file mode 100644 index cb509a26d..000000000 --- a/dri3/dri3_event.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright © 2013 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include "dri3_priv.h" - -RESTYPE dri3_event_type; - -static int -dri3_free_event(void *data, XID id) -{ - dri3_event_ptr dri3_event = (dri3_event_ptr) data; - dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event->window); - dri3_event_ptr *previous, current; - - for (previous = &window_priv->events; (current = *previous); previous = ¤t->next) { - if (current == dri3_event) { - *previous = dri3_event->next; - break; - } - } - free((void *) dri3_event); - return 1; - -} - -void -dri3_free_events(WindowPtr window) -{ - dri3_window_priv_ptr window_priv = dri3_window_priv(window); - dri3_event_ptr event; - - if (!window_priv) - return; - - while ((event = window_priv->events)) - FreeResource(event->id, RT_NONE); -} - -static void -dri3_event_swap(xGenericEvent *from, xGenericEvent *to) -{ - *to = *from; - swaps(&to->sequenceNumber); - swapl(&to->length); - swaps(&to->evtype); - switch (from->evtype) { - case DRI3_ConfigureNotify: { - xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to; - - swapl(&c->eid); - swapl(&c->window); - swaps(&c->x); - swaps(&c->y); - swaps(&c->width); - swaps(&c->height); - swaps(&c->off_x); - swaps(&c->off_y); - swaps(&c->pixmap_width); - swaps(&c->pixmap_height); - swapl(&c->pixmap_flags); - break; - } - } -} - -void -dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling) -{ - dri3_window_priv_ptr window_priv = dri3_window_priv(window); - - if (window_priv) { - xDRI3ConfigureNotify cn = { - .type = GenericEvent, - .extension = dri3_request, - .length = (sizeof(xDRI3ConfigureNotify) - 32) >> 2, - .evtype = DRI3_ConfigureNotify, - .eid = 0, - .window = window->drawable.id, - .x = x, - .y = y, - .width = w, - .height = h, - .off_x = 0, - .off_y = 0, - .pixmap_width = w, - .pixmap_height = h, - .pixmap_flags = 0 - }; - dri3_event_ptr event; - dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window->drawable.pScreen); - - if (screen_priv->info && screen_priv->info->driver_config) - screen_priv->info->driver_config(window, &cn); - - for (event = window_priv->events; event; event = event->next) { - if (event->mask & (1 << DRI3ConfigureNotify)) { - cn.eid = event->id; - WriteEventsToClient(event->client, 1, (xEvent *) &cn); - } - } - } -} - -int -dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask) -{ - dri3_window_priv_ptr window_priv = dri3_window_priv(window); - dri3_event_ptr event; - - if (!window_priv) - return BadAlloc; - - event = calloc (1, sizeof (dri3_event_rec)); - if (!event) - return BadAlloc; - - event->client = client; - event->window = window; - event->id = eid; - event->mask = mask; - - event->next = window_priv->events; - window_priv->events = event; - - if (!AddResource(event->id, dri3_event_type, (void *) event)) - return BadAlloc; - - return Success; -} - -Bool -dri3_event_init(void) -{ - dri3_event_type = CreateNewResourceType(dri3_free_event, "DRI3Event"); - if (!dri3_event_type) - return FALSE; - - GERegisterExtension(dri3_request, dri3_event_swap); - return TRUE; -} From c4a0d6c9139d2c0107b80420cc2342614bbe95ef Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 22 Oct 2014 10:47:03 -0400 Subject: [PATCH 05/23] dri3: static cleanup Also remove unused window private key. Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- dri3/dri3.c | 3 +-- dri3/dri3_priv.h | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/dri3/dri3.c b/dri3/dri3.c index 385862a3b..d042b8b7d 100644 --- a/dri3/dri3.c +++ b/dri3/dri3.c @@ -26,9 +26,8 @@ #include "dri3_priv.h" -int dri3_request; +static int dri3_request; DevPrivateKeyRec dri3_screen_private_key; -DevPrivateKeyRec dri3_window_private_key; static int dri3_screen_generation; diff --git a/dri3/dri3_priv.h b/dri3/dri3_priv.h index e2fed839b..e61ef226c 100644 --- a/dri3/dri3_priv.h +++ b/dri3/dri3_priv.h @@ -32,8 +32,6 @@ #include #include "dri3.h" -extern int dri3_request; - extern DevPrivateKeyRec dri3_screen_private_key; typedef struct dri3_screen_priv { From b51f7f8582ab6c3cc9fa56c8d9721d0f240915e7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 23 May 2014 13:37:41 -0400 Subject: [PATCH 06/23] dix: Unexport various implementation details Acked-by: Chris Wilson Signed-off-by: Adam Jackson --- dix/colormap.c | 337 ++++++++++++++++++++--------------------- dix/dispatch.c | 1 + dix/dixfonts.c | 12 +- dix/enterleave.c | 2 +- dix/enterleave.h | 2 - dix/main.c | 2 + hw/xfree86/sdksyms.sh | 2 - include/Makefile.am | 4 +- include/colormap.h | 12 -- include/dixfont.h | 35 ----- include/dixstruct.h | 23 ++- include/swaprep.h | 342 +++++++++++++++++++++--------------------- include/swapreq.h | 6 +- mi/miglblt.c | 1 + miext/damage/damage.c | 1 + os/utils.c | 1 + 16 files changed, 369 insertions(+), 414 deletions(-) diff --git a/dix/colormap.c b/dix/colormap.c index a3e5a2c09..89a17c43b 100644 --- a/dix/colormap.c +++ b/dix/colormap.c @@ -64,6 +64,9 @@ SOFTWARE. #include "privates.h" #include "xace.h" +typedef int (*ColorCompareProcPtr) (EntryPtr /*pent */ , + xrgb * /*prgb */ ); + static Pixel FindBestPixel(EntryPtr /*pentFirst */ , int /*size */ , xrgb * /*prgb */ , @@ -748,6 +751,173 @@ UpdateColors(ColormapPtr pmap) free(defs); } +/* Tries to find a color in pmap that exactly matches the one requested in prgb + * if it can't it allocates one. + * Starts looking at pentFirst + *pPixel, so if you want a specific pixel, + * load *pPixel with that value, otherwise set it to 0 + */ +static int +FindColor(ColormapPtr pmap, EntryPtr pentFirst, int size, xrgb * prgb, + Pixel * pPixel, int channel, int client, ColorCompareProcPtr comp) +{ + EntryPtr pent; + Bool foundFree; + Pixel pixel, Free = 0; + int npix, count, *nump = NULL; + Pixel **pixp = NULL, *ppix; + xColorItem def; + + foundFree = FALSE; + + if ((pixel = *pPixel) >= size) + pixel = 0; + /* see if there is a match, and also look for a free entry */ + for (pent = pentFirst + pixel, count = size; --count >= 0;) { + if (pent->refcnt > 0) { + if ((*comp) (pent, prgb)) { + if (client >= 0) + pent->refcnt++; + *pPixel = pixel; + switch (channel) { + case REDMAP: + *pPixel <<= pmap->pVisual->offsetRed; + case PSEUDOMAP: + break; + case GREENMAP: + *pPixel <<= pmap->pVisual->offsetGreen; + break; + case BLUEMAP: + *pPixel <<= pmap->pVisual->offsetBlue; + break; + } + goto gotit; + } + } + else if (!foundFree && pent->refcnt == 0) { + Free = pixel; + foundFree = TRUE; + /* If we're initializing the colormap, then we are looking for + * the first free cell we can find, not to minimize the number + * of entries we use. So don't look any further. */ + if (pmap->flags & BeingCreated) + break; + } + pixel++; + if (pixel >= size) { + pent = pentFirst; + pixel = 0; + } + else + pent++; + } + + /* If we got here, we didn't find a match. If we also didn't find + * a free entry, we're out of luck. Otherwise, we'll usurp a free + * entry and fill it in */ + if (!foundFree) + return BadAlloc; + pent = pentFirst + Free; + pent->fShared = FALSE; + pent->refcnt = (client >= 0) ? 1 : AllocTemporary; + + switch (channel) { + case PSEUDOMAP: + pent->co.local.red = prgb->red; + pent->co.local.green = prgb->green; + pent->co.local.blue = prgb->blue; + def.red = prgb->red; + def.green = prgb->green; + def.blue = prgb->blue; + def.flags = (DoRed | DoGreen | DoBlue); + if (client >= 0) + pmap->freeRed--; + def.pixel = Free; + break; + + case REDMAP: + pent->co.local.red = prgb->red; + def.red = prgb->red; + def.green = pmap->green[0].co.local.green; + def.blue = pmap->blue[0].co.local.blue; + def.flags = DoRed; + if (client >= 0) + pmap->freeRed--; + def.pixel = Free << pmap->pVisual->offsetRed; + break; + + case GREENMAP: + pent->co.local.green = prgb->green; + def.red = pmap->red[0].co.local.red; + def.green = prgb->green; + def.blue = pmap->blue[0].co.local.blue; + def.flags = DoGreen; + if (client >= 0) + pmap->freeGreen--; + def.pixel = Free << pmap->pVisual->offsetGreen; + break; + + case BLUEMAP: + pent->co.local.blue = prgb->blue; + def.red = pmap->red[0].co.local.red; + def.green = pmap->green[0].co.local.green; + def.blue = prgb->blue; + def.flags = DoBlue; + if (client >= 0) + pmap->freeBlue--; + def.pixel = Free << pmap->pVisual->offsetBlue; + break; + } + (*pmap->pScreen->StoreColors) (pmap, 1, &def); + pixel = Free; + *pPixel = def.pixel; + + gotit: + if (pmap->flags & BeingCreated || client == -1) + return Success; + /* Now remember the pixel, for freeing later */ + switch (channel) { + case PSEUDOMAP: + case REDMAP: + nump = pmap->numPixelsRed; + pixp = pmap->clientPixelsRed; + break; + + case GREENMAP: + nump = pmap->numPixelsGreen; + pixp = pmap->clientPixelsGreen; + break; + + case BLUEMAP: + nump = pmap->numPixelsBlue; + pixp = pmap->clientPixelsBlue; + break; + } + npix = nump[client]; + ppix = reallocarray(pixp[client], npix + 1, sizeof(Pixel)); + if (!ppix) { + pent->refcnt--; + if (!pent->fShared) + switch (channel) { + case PSEUDOMAP: + case REDMAP: + pmap->freeRed++; + break; + case GREENMAP: + pmap->freeGreen++; + break; + case BLUEMAP: + pmap->freeBlue++; + break; + } + return BadAlloc; + } + ppix[npix] = pixel; + pixp[client] = ppix; + nump[client]++; + + return Success; +} + /* Get a read-only color from a ColorMap (probably slow for large maps) * Returns by changing the value in pred, pgreen, pblue and pPix */ @@ -1137,173 +1307,6 @@ FindColorInRootCmap(ColormapPtr pmap, EntryPtr pentFirst, int size, } } -/* Tries to find a color in pmap that exactly matches the one requested in prgb - * if it can't it allocates one. - * Starts looking at pentFirst + *pPixel, so if you want a specific pixel, - * load *pPixel with that value, otherwise set it to 0 - */ -int -FindColor(ColormapPtr pmap, EntryPtr pentFirst, int size, xrgb * prgb, - Pixel * pPixel, int channel, int client, ColorCompareProcPtr comp) -{ - EntryPtr pent; - Bool foundFree; - Pixel pixel, Free = 0; - int npix, count, *nump = NULL; - Pixel **pixp = NULL, *ppix; - xColorItem def; - - foundFree = FALSE; - - if ((pixel = *pPixel) >= size) - pixel = 0; - /* see if there is a match, and also look for a free entry */ - for (pent = pentFirst + pixel, count = size; --count >= 0;) { - if (pent->refcnt > 0) { - if ((*comp) (pent, prgb)) { - if (client >= 0) - pent->refcnt++; - *pPixel = pixel; - switch (channel) { - case REDMAP: - *pPixel <<= pmap->pVisual->offsetRed; - case PSEUDOMAP: - break; - case GREENMAP: - *pPixel <<= pmap->pVisual->offsetGreen; - break; - case BLUEMAP: - *pPixel <<= pmap->pVisual->offsetBlue; - break; - } - goto gotit; - } - } - else if (!foundFree && pent->refcnt == 0) { - Free = pixel; - foundFree = TRUE; - /* If we're initializing the colormap, then we are looking for - * the first free cell we can find, not to minimize the number - * of entries we use. So don't look any further. */ - if (pmap->flags & BeingCreated) - break; - } - pixel++; - if (pixel >= size) { - pent = pentFirst; - pixel = 0; - } - else - pent++; - } - - /* If we got here, we didn't find a match. If we also didn't find - * a free entry, we're out of luck. Otherwise, we'll usurp a free - * entry and fill it in */ - if (!foundFree) - return BadAlloc; - pent = pentFirst + Free; - pent->fShared = FALSE; - pent->refcnt = (client >= 0) ? 1 : AllocTemporary; - - switch (channel) { - case PSEUDOMAP: - pent->co.local.red = prgb->red; - pent->co.local.green = prgb->green; - pent->co.local.blue = prgb->blue; - def.red = prgb->red; - def.green = prgb->green; - def.blue = prgb->blue; - def.flags = (DoRed | DoGreen | DoBlue); - if (client >= 0) - pmap->freeRed--; - def.pixel = Free; - break; - - case REDMAP: - pent->co.local.red = prgb->red; - def.red = prgb->red; - def.green = pmap->green[0].co.local.green; - def.blue = pmap->blue[0].co.local.blue; - def.flags = DoRed; - if (client >= 0) - pmap->freeRed--; - def.pixel = Free << pmap->pVisual->offsetRed; - break; - - case GREENMAP: - pent->co.local.green = prgb->green; - def.red = pmap->red[0].co.local.red; - def.green = prgb->green; - def.blue = pmap->blue[0].co.local.blue; - def.flags = DoGreen; - if (client >= 0) - pmap->freeGreen--; - def.pixel = Free << pmap->pVisual->offsetGreen; - break; - - case BLUEMAP: - pent->co.local.blue = prgb->blue; - def.red = pmap->red[0].co.local.red; - def.green = pmap->green[0].co.local.green; - def.blue = prgb->blue; - def.flags = DoBlue; - if (client >= 0) - pmap->freeBlue--; - def.pixel = Free << pmap->pVisual->offsetBlue; - break; - } - (*pmap->pScreen->StoreColors) (pmap, 1, &def); - pixel = Free; - *pPixel = def.pixel; - - gotit: - if (pmap->flags & BeingCreated || client == -1) - return Success; - /* Now remember the pixel, for freeing later */ - switch (channel) { - case PSEUDOMAP: - case REDMAP: - nump = pmap->numPixelsRed; - pixp = pmap->clientPixelsRed; - break; - - case GREENMAP: - nump = pmap->numPixelsGreen; - pixp = pmap->clientPixelsGreen; - break; - - case BLUEMAP: - nump = pmap->numPixelsBlue; - pixp = pmap->clientPixelsBlue; - break; - } - npix = nump[client]; - ppix = reallocarray(pixp[client], npix + 1, sizeof(Pixel)); - if (!ppix) { - pent->refcnt--; - if (!pent->fShared) - switch (channel) { - case PSEUDOMAP: - case REDMAP: - pmap->freeRed++; - break; - case GREENMAP: - pmap->freeGreen++; - break; - case BLUEMAP: - pmap->freeBlue++; - break; - } - return BadAlloc; - } - ppix[npix] = pixel; - pixp[client] = ppix; - nump[client]++; - - return Success; -} - /* Comparison functions -- passed to FindColor to determine if an * entry is already the color we're looking for or not */ static int diff --git a/dix/dispatch.c b/dix/dispatch.c index 9208582a6..dbbac8bd6 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -108,6 +108,7 @@ int ProcInitialConnection(); #include "windowstr.h" #include +#include #include "dixfontstr.h" #include "gcstruct.h" #include "selection.h" diff --git a/dix/dixfonts.c b/dix/dixfonts.c index be389e82f..968cee461 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -156,7 +156,7 @@ SetDefaultFont(const char *defaultfontname) * init_fpe() and free_fpe(), there shouldn't be any problem in using * freed data. */ -void +static void QueueFontWakeup(FontPathElementPtr fpe) { int i; @@ -179,7 +179,7 @@ QueueFontWakeup(FontPathElementPtr fpe) num_slept_fpes++; } -void +static void RemoveFontWakeup(FontPathElementPtr fpe) { int i, j; @@ -195,7 +195,7 @@ RemoveFontWakeup(FontPathElementPtr fpe) } } -void +static void FontWakeup(void *data, int count, void *LastSelectMask) { int i; @@ -849,7 +849,7 @@ ListFonts(ClientPtr client, unsigned char *pattern, unsigned length, return Success; } -int +static int doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) { FontPathElementPtr fpe; @@ -1105,7 +1105,7 @@ static ChangeGCVal clearGC[] = { {.ptr = NullPixmap} }; #define clearGCmask (GCClipMask) -int +static int doPolyText(ClientPtr client, PTclosurePtr c) { FontPtr pFont = c->pGC->font, oldpFont; @@ -1389,7 +1389,7 @@ PolyText(ClientPtr client, DrawablePtr pDraw, GC * pGC, unsigned char *pElt, #undef TextEltHeader #undef FontShiftSize -int +static int doImageText(ClientPtr client, ITclosurePtr c) { int err = Success, lgerr; /* err is in X error, not font error, space */ diff --git a/dix/enterleave.c b/dix/enterleave.c index 7f1f94165..f0b1572fb 100644 --- a/dix/enterleave.c +++ b/dix/enterleave.c @@ -212,7 +212,7 @@ SetFocusOut(DeviceIntPtr dev) * @return The window that is the first ancestor of both 'a' and 'b', or the * NullWindow if they do not have a common ancestor. */ -WindowPtr +static WindowPtr CommonAncestor(WindowPtr a, WindowPtr b) { for (b = b->parent; b; b = b->parent) diff --git a/dix/enterleave.h b/dix/enterleave.h index a59d05799..4b833d8a3 100644 --- a/dix/enterleave.h +++ b/dix/enterleave.h @@ -41,8 +41,6 @@ extern void EnterLeaveEvent(DeviceIntPtr mouse, int type, int mode, int detail, WindowPtr pWin, Window child); -extern WindowPtr CommonAncestor(WindowPtr a, WindowPtr b); - extern void CoreEnterLeaveEvent(DeviceIntPtr mouse, int type, int mode, diff --git a/dix/main.c b/dix/main.c index 09f9504b8..db3b9c0a9 100644 --- a/dix/main.c +++ b/dix/main.c @@ -95,6 +95,8 @@ Equipment Corporation. #include "cursorstr.h" #include "selection.h" #include +#include +#include #include "opaque.h" #include "servermd.h" #include "hotplug.h" diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index 05ac41096..e1415229c 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -295,8 +295,6 @@ cat > sdksyms.c << EOF #include "selection.h" #include "servermd.h" #include "site.h" -#include "swaprep.h" -#include "swapreq.h" #include "validate.h" #include "window.h" #include "windowstr.h" diff --git a/include/Makefile.am b/include/Makefile.am index 738b582e9..70b83ffec 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -52,8 +52,6 @@ sdk_HEADERS = \ selection.h \ servermd.h \ site.h \ - swaprep.h \ - swapreq.h \ validate.h \ window.h \ windowstr.h \ @@ -74,5 +72,7 @@ EXTRA_DIST = \ dixfontstubs.h eventconvert.h eventstr.h inpututils.h \ probes.h \ protocol-versions.h \ + swaprep.h \ + swapreq.h \ systemd-logind.h \ xsha1.h diff --git a/include/colormap.h b/include/colormap.h index 5f6b97fec..f3b18a613 100644 --- a/include/colormap.h +++ b/include/colormap.h @@ -108,18 +108,6 @@ extern _X_EXPORT void FakeAllocColor(ColormapPtr /*pmap */ , extern _X_EXPORT void FakeFreeColor(ColormapPtr /*pmap */ , Pixel /*pixel */ ); -typedef int (*ColorCompareProcPtr) (EntryPtr /*pent */ , - xrgb * /*prgb */ ); - -extern _X_EXPORT int FindColor(ColormapPtr /*pmap */ , - EntryPtr /*pentFirst */ , - int /*size */ , - xrgb * /*prgb */ , - Pixel * /*pPixel */ , - int /*channel */ , - int /*client */ , - ColorCompareProcPtr /*comp */ ); - extern _X_EXPORT int QueryColors(ColormapPtr /*pmap */ , int /*count */ , Pixel * /*ppixIn */ , diff --git a/include/dixfont.h b/include/dixfont.h index 48c630539..1895509b3 100644 --- a/include/dixfont.h +++ b/include/dixfont.h @@ -36,14 +36,6 @@ typedef struct _DIXFontProp *DIXFontPropPtr; extern _X_EXPORT Bool SetDefaultFont(const char * /*defaultfontname */ ); -extern _X_EXPORT void QueueFontWakeup(FontPathElementPtr /*fpe */ ); - -extern _X_EXPORT void RemoveFontWakeup(FontPathElementPtr /*fpe */ ); - -extern _X_EXPORT void FontWakeup(void *data, - int count, - void *LastSelectMask); - extern _X_EXPORT int OpenFont(ClientPtr /*client */ , XID /*fid */ , Mask /*flags */ , @@ -64,14 +56,6 @@ extern _X_EXPORT int ListFonts(ClientPtr /*client */ , unsigned int /*length */ , unsigned int /*max_names */ ); -extern _X_EXPORT int - doListFontsWithInfo(ClientPtr /*client */ , - LFWIclosurePtr /*c */ ); - -extern _X_EXPORT int doPolyText(ClientPtr /*client */ , - PTclosurePtr /*c */ - ); - extern _X_EXPORT int PolyText(ClientPtr /*client */ , DrawablePtr /*pDraw */ , GCPtr /*pGC */ , @@ -82,9 +66,6 @@ extern _X_EXPORT int PolyText(ClientPtr /*client */ , int /*reqType */ , XID /*did */ ); -extern _X_EXPORT int doImageText(ClientPtr /*client */ , - ITclosurePtr /*c */ ); - extern _X_EXPORT int ImageText(ClientPtr /*client */ , DrawablePtr /*pDraw */ , GCPtr /*pGC */ , @@ -126,22 +107,6 @@ extern _X_EXPORT void dixGetGlyphs(FontPtr /*font */ , unsigned long * /*glyphcount */ , CharInfoPtr * /*glyphs */ ); -extern _X_EXPORT void QueryGlyphExtents(FontPtr /*pFont */ , - CharInfoPtr * /*charinfo */ , - unsigned long /*count */ , - ExtentInfoPtr /*info */ ); - -extern _X_EXPORT Bool QueryTextExtents(FontPtr /*pFont */ , - unsigned long /*count */ , - unsigned char * /*chars */ , - ExtentInfoPtr /*info */ ); - -extern _X_EXPORT Bool ParseGlyphCachingMode(char * /*str */ ); - -extern _X_EXPORT void InitGlyphCaching(void); - -extern _X_EXPORT void SetGlyphCachingMode(int /*newmode */ ); - extern _X_EXPORT void register_fpe_functions(void); #endif /* DIXFONT_H */ diff --git a/include/dixstruct.h b/include/dixstruct.h index 6c13895d7..757506623 100644 --- a/include/dixstruct.h +++ b/include/dixstruct.h @@ -126,21 +126,18 @@ SetReqFds(ClientPtr client, int req_fds) { /* * Scheduling interface */ -extern _X_EXPORT long SmartScheduleTime; -extern _X_EXPORT long SmartScheduleInterval; -extern _X_EXPORT long SmartScheduleSlice; -extern _X_EXPORT long SmartScheduleMaxSlice; -extern _X_EXPORT Bool SmartScheduleDisable; -extern _X_EXPORT void -SmartScheduleStartTimer(void); -extern _X_EXPORT void -SmartScheduleStopTimer(void); +extern long SmartScheduleTime; +extern long SmartScheduleInterval; +extern long SmartScheduleSlice; +extern long SmartScheduleMaxSlice; +extern Bool SmartScheduleDisable; +extern void SmartScheduleStartTimer(void); +extern void SmartScheduleStopTimer(void); #define SMART_MAX_PRIORITY (20) #define SMART_MIN_PRIORITY (-20) -extern _X_EXPORT void -SmartScheduleInit(void); +extern void SmartScheduleInit(void); /* This prototype is used pervasively in Xext, dix */ #define DISPATCH_PROC(func) int func(ClientPtr /* client */) @@ -179,13 +176,13 @@ typedef struct _CallbackList { /* proc vectors */ -extern _X_EXPORT int (*InitialVector[3]) (ClientPtr /*client */ ); +extern int (*InitialVector[3]) (ClientPtr /*client */ ); extern _X_EXPORT int (*ProcVector[256]) (ClientPtr /*client */ ); extern _X_EXPORT int (*SwappedProcVector[256]) (ClientPtr /*client */ ); -extern _X_EXPORT ReplySwapPtr ReplySwapVector[256]; +extern ReplySwapPtr ReplySwapVector[256]; extern _X_EXPORT int ProcBadRequest(ClientPtr /*client */ ); diff --git a/include/swaprep.h b/include/swaprep.h index 3fa2a090c..63c54c7fb 100644 --- a/include/swaprep.h +++ b/include/swaprep.h @@ -26,207 +26,207 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef SWAPREP_H #define SWAPREP_H 1 -extern _X_EXPORT void Swap32Write(ClientPtr /* pClient */ , +extern void Swap32Write(ClientPtr /* pClient */ , + int /* size */ , + CARD32 * /* pbuf */ ); + +extern void CopySwap32Write(ClientPtr /* pClient */ , + int /* size */ , + CARD32 * /* pbuf */ ); + +extern void CopySwap16Write(ClientPtr /* pClient */ , + int /* size */ , + short * /* pbuf */ ); + +extern void SGenericReply(ClientPtr /* pClient */ , + int /* size */ , + xGenericReply * /* pRep */ ); + +extern void SGetWindowAttributesReply(ClientPtr /* pClient */ , + int /* size */ , + xGetWindowAttributesReply * + /* pRep */ ); + +extern void SGetGeometryReply(ClientPtr /* pClient */ , + int /* size */ , + xGetGeometryReply * /* pRep */ ); + +extern void SQueryTreeReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryTreeReply * /* pRep */ ); + +extern void SInternAtomReply(ClientPtr /* pClient */ , + int /* size */ , + xInternAtomReply * /* pRep */ ); + +extern void SGetAtomNameReply(ClientPtr /* pClient */ , + int /* size */ , + xGetAtomNameReply * /* pRep */ ); + +extern void SGetPropertyReply(ClientPtr /* pClient */ , + int /* size */ , + xGetPropertyReply * /* pRep */ ); + +extern void SListPropertiesReply(ClientPtr /* pClient */ , + int /* size */ , + xListPropertiesReply * /* pRep */ ); + +extern void SGetSelectionOwnerReply(ClientPtr /* pClient */ , + int /* size */ , + xGetSelectionOwnerReply * + /* pRep */ ); + +extern void SQueryPointerReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryPointerReply * /* pRep */ ); + +extern void SwapTimeCoordWrite(ClientPtr /* pClient */ , + int /* size */ , + xTimecoord * /* pRep */ ); + +extern void SGetMotionEventsReply(ClientPtr /* pClient */ , int /* size */ , - CARD32 * /* pbuf */ ); + xGetMotionEventsReply * /* pRep */ + ); -extern _X_EXPORT void CopySwap32Write(ClientPtr /* pClient */ , - int /* size */ , - CARD32 * /* pbuf */ ); +extern void STranslateCoordsReply(ClientPtr /* pClient */ , + int /* size */ , + xTranslateCoordsReply * /* pRep */ + ); -extern _X_EXPORT void CopySwap16Write(ClientPtr /* pClient */ , - int /* size */ , - short * /* pbuf */ ); +extern void SGetInputFocusReply(ClientPtr /* pClient */ , + int /* size */ , + xGetInputFocusReply * /* pRep */ ); -extern _X_EXPORT void SGenericReply(ClientPtr /* pClient */ , +extern void SQueryKeymapReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryKeymapReply * /* pRep */ ); + +extern void SQueryFontReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryFontReply * /* pRep */ ); + +extern void SQueryTextExtentsReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryTextExtentsReply * /* pRep */ + ); + +extern void SListFontsReply(ClientPtr /* pClient */ , + int /* size */ , + xListFontsReply * /* pRep */ ); + +extern void SListFontsWithInfoReply(ClientPtr /* pClient */ , int /* size */ , - xGenericReply * /* pRep */ ); + xListFontsWithInfoReply * + /* pRep */ ); -extern _X_EXPORT void SGetWindowAttributesReply(ClientPtr /* pClient */ , - int /* size */ , - xGetWindowAttributesReply * - /* pRep */ ); +extern void SGetFontPathReply(ClientPtr /* pClient */ , + int /* size */ , + xGetFontPathReply * /* pRep */ ); -extern _X_EXPORT void SGetGeometryReply(ClientPtr /* pClient */ , - int /* size */ , - xGetGeometryReply * /* pRep */ ); +extern void SGetImageReply(ClientPtr /* pClient */ , + int /* size */ , + xGetImageReply * /* pRep */ ); -extern _X_EXPORT void SQueryTreeReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryTreeReply * /* pRep */ ); - -extern _X_EXPORT void SInternAtomReply(ClientPtr /* pClient */ , - int /* size */ , - xInternAtomReply * /* pRep */ ); - -extern _X_EXPORT void SGetAtomNameReply(ClientPtr /* pClient */ , - int /* size */ , - xGetAtomNameReply * /* pRep */ ); - -extern _X_EXPORT void SGetPropertyReply(ClientPtr /* pClient */ , - int /* size */ , - xGetPropertyReply * /* pRep */ ); - -extern _X_EXPORT void SListPropertiesReply(ClientPtr /* pClient */ , - int /* size */ , - xListPropertiesReply * /* pRep */ ); - -extern _X_EXPORT void SGetSelectionOwnerReply(ClientPtr /* pClient */ , - int /* size */ , - xGetSelectionOwnerReply * - /* pRep */ ); - -extern _X_EXPORT void SQueryPointerReply(ClientPtr /* pClient */ , +extern void SListInstalledColormapsReply(ClientPtr /* pClient */ , int /* size */ , - xQueryPointerReply * /* pRep */ ); + xListInstalledColormapsReply + * /* pRep */ ); -extern _X_EXPORT void SwapTimeCoordWrite(ClientPtr /* pClient */ , - int /* size */ , - xTimecoord * /* pRep */ ); +extern void SAllocColorReply(ClientPtr /* pClient */ , + int /* size */ , + xAllocColorReply * /* pRep */ ); -extern _X_EXPORT void SGetMotionEventsReply(ClientPtr /* pClient */ , - int /* size */ , - xGetMotionEventsReply * /* pRep */ - ); +extern void SAllocNamedColorReply(ClientPtr /* pClient */ , + int /* size */ , + xAllocNamedColorReply * /* pRep */ + ); -extern _X_EXPORT void STranslateCoordsReply(ClientPtr /* pClient */ , - int /* size */ , - xTranslateCoordsReply * /* pRep */ - ); +extern void SAllocColorCellsReply(ClientPtr /* pClient */ , + int /* size */ , + xAllocColorCellsReply * /* pRep */ + ); -extern _X_EXPORT void SGetInputFocusReply(ClientPtr /* pClient */ , - int /* size */ , - xGetInputFocusReply * /* pRep */ ); +extern void SAllocColorPlanesReply(ClientPtr /* pClient */ , + int /* size */ , + xAllocColorPlanesReply * /* pRep */ + ); -extern _X_EXPORT void SQueryKeymapReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryKeymapReply * /* pRep */ ); +extern void SQColorsExtend(ClientPtr /* pClient */ , + int /* size */ , + xrgb * /* prgb */ ); -extern _X_EXPORT void SQueryFontReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryFontReply * /* pRep */ ); +extern void SQueryColorsReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryColorsReply * /* pRep */ ); -extern _X_EXPORT void SQueryTextExtentsReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryTextExtentsReply * /* pRep */ - ); +extern void SLookupColorReply(ClientPtr /* pClient */ , + int /* size */ , + xLookupColorReply * /* pRep */ ); -extern _X_EXPORT void SListFontsReply(ClientPtr /* pClient */ , - int /* size */ , - xListFontsReply * /* pRep */ ); +extern void SQueryBestSizeReply(ClientPtr /* pClient */ , + int /* size */ , + xQueryBestSizeReply * /* pRep */ ); -extern _X_EXPORT void SListFontsWithInfoReply(ClientPtr /* pClient */ , - int /* size */ , - xListFontsWithInfoReply * - /* pRep */ ); +extern void SListExtensionsReply(ClientPtr /* pClient */ , + int /* size */ , + xListExtensionsReply * /* pRep */ ); -extern _X_EXPORT void SGetFontPathReply(ClientPtr /* pClient */ , - int /* size */ , - xGetFontPathReply * /* pRep */ ); - -extern _X_EXPORT void SGetImageReply(ClientPtr /* pClient */ , +extern void SGetKeyboardMappingReply(ClientPtr /* pClient */ , int /* size */ , - xGetImageReply * /* pRep */ ); + xGetKeyboardMappingReply * + /* pRep */ ); -extern _X_EXPORT void SListInstalledColormapsReply(ClientPtr /* pClient */ , - int /* size */ , - xListInstalledColormapsReply - * /* pRep */ ); - -extern _X_EXPORT void SAllocColorReply(ClientPtr /* pClient */ , - int /* size */ , - xAllocColorReply * /* pRep */ ); - -extern _X_EXPORT void SAllocNamedColorReply(ClientPtr /* pClient */ , - int /* size */ , - xAllocNamedColorReply * /* pRep */ - ); - -extern _X_EXPORT void SAllocColorCellsReply(ClientPtr /* pClient */ , - int /* size */ , - xAllocColorCellsReply * /* pRep */ - ); - -extern _X_EXPORT void SAllocColorPlanesReply(ClientPtr /* pClient */ , - int /* size */ , - xAllocColorPlanesReply * /* pRep */ - ); - -extern _X_EXPORT void SQColorsExtend(ClientPtr /* pClient */ , - int /* size */ , - xrgb * /* prgb */ ); - -extern _X_EXPORT void SQueryColorsReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryColorsReply * /* pRep */ ); - -extern _X_EXPORT void SLookupColorReply(ClientPtr /* pClient */ , - int /* size */ , - xLookupColorReply * /* pRep */ ); - -extern _X_EXPORT void SQueryBestSizeReply(ClientPtr /* pClient */ , - int /* size */ , - xQueryBestSizeReply * /* pRep */ ); - -extern _X_EXPORT void SListExtensionsReply(ClientPtr /* pClient */ , - int /* size */ , - xListExtensionsReply * /* pRep */ ); - -extern _X_EXPORT void SGetKeyboardMappingReply(ClientPtr /* pClient */ , - int /* size */ , - xGetKeyboardMappingReply * - /* pRep */ ); - -extern _X_EXPORT void SGetPointerMappingReply(ClientPtr /* pClient */ , - int /* size */ , - xGetPointerMappingReply * - /* pRep */ ); - -extern _X_EXPORT void SGetModifierMappingReply(ClientPtr /* pClient */ , - int /* size */ , - xGetModifierMappingReply * - /* pRep */ ); - -extern _X_EXPORT void SGetKeyboardControlReply(ClientPtr /* pClient */ , - int /* size */ , - xGetKeyboardControlReply * - /* pRep */ ); - -extern _X_EXPORT void SGetPointerControlReply(ClientPtr /* pClient */ , - int /* size */ , - xGetPointerControlReply * - /* pRep */ ); - -extern _X_EXPORT void SGetScreenSaverReply(ClientPtr /* pClient */ , - int /* size */ , - xGetScreenSaverReply * /* pRep */ ); - -extern _X_EXPORT void SLHostsExtend(ClientPtr /* pClient */ , +extern void SGetPointerMappingReply(ClientPtr /* pClient */ , int /* size */ , - char * /* buf */ ); + xGetPointerMappingReply * + /* pRep */ ); -extern _X_EXPORT void SListHostsReply(ClientPtr /* pClient */ , - int /* size */ , - xListHostsReply * /* pRep */ ); +extern void SGetModifierMappingReply(ClientPtr /* pClient */ , + int /* size */ , + xGetModifierMappingReply * + /* pRep */ ); -extern _X_EXPORT void SErrorEvent(xError * /* from */ , - xError * /* to */ ); +extern void SGetKeyboardControlReply(ClientPtr /* pClient */ , + int /* size */ , + xGetKeyboardControlReply * + /* pRep */ ); -extern _X_EXPORT void SwapConnSetupInfo(char * /* pInfo */ , - char * /* pInfoTBase */ ); +extern void SGetPointerControlReply(ClientPtr /* pClient */ , + int /* size */ , + xGetPointerControlReply * + /* pRep */ ); -extern _X_EXPORT void WriteSConnectionInfo(ClientPtr /* pClient */ , - unsigned long /* size */ , - char * /* pInfo */ ); +extern void SGetScreenSaverReply(ClientPtr /* pClient */ , + int /* size */ , + xGetScreenSaverReply * /* pRep */ ); -extern _X_EXPORT void SwapConnSetupPrefix(xConnSetupPrefix * /* pcspFrom */ , - xConnSetupPrefix * /* pcspTo */ ); +extern void SLHostsExtend(ClientPtr /* pClient */ , + int /* size */ , + char * /* buf */ ); -extern _X_EXPORT void WriteSConnSetupPrefix(ClientPtr /* pClient */ , - xConnSetupPrefix * /* pcsp */ ); +extern void SListHostsReply(ClientPtr /* pClient */ , + int /* size */ , + xListHostsReply * /* pRep */ ); + +extern void SErrorEvent(xError * /* from */ , + xError * /* to */ ); + +extern void SwapConnSetupInfo(char * /* pInfo */ , + char * /* pInfoTBase */ ); + +extern void WriteSConnectionInfo(ClientPtr /* pClient */ , + unsigned long /* size */ , + char * /* pInfo */ ); + +extern void SwapConnSetupPrefix(xConnSetupPrefix * /* pcspFrom */ , + xConnSetupPrefix * /* pcspTo */ ); + +extern void WriteSConnSetupPrefix(ClientPtr /* pClient */ , + xConnSetupPrefix * /* pcsp */ ); #undef SWAPREP_PROC -#define SWAPREP_PROC(func) extern _X_EXPORT void func(xEvent * /* from */, xEvent * /* to */) +#define SWAPREP_PROC(func) extern void func(xEvent * /* from */, xEvent * /* to */) SWAPREP_PROC(SCirculateEvent); SWAPREP_PROC(SClientMessageEvent); diff --git a/include/swapreq.h b/include/swapreq.h index 07eff807f..d696aa05e 100644 --- a/include/swapreq.h +++ b/include/swapreq.h @@ -26,13 +26,13 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef SWAPREQ_H #define SWAPREQ_H 1 -extern _X_EXPORT void SwapColorItem(xColorItem * /* pItem */ ); +extern void SwapColorItem(xColorItem * /* pItem */ ); -extern _X_EXPORT void SwapConnClientPrefix(xConnClientPrefix * /* pCCP */ ); +extern void SwapConnClientPrefix(xConnClientPrefix * /* pCCP */ ); #undef SWAPREQ_PROC -#define SWAPREQ_PROC(func) extern _X_EXPORT int func(ClientPtr /* client */) +#define SWAPREQ_PROC(func) extern int func(ClientPtr /* client */) SWAPREQ_PROC(SProcAllocColor); SWAPREQ_PROC(SProcAllocColorCells); diff --git a/mi/miglblt.c b/mi/miglblt.c index e9d3a1af0..46268aee9 100644 --- a/mi/miglblt.c +++ b/mi/miglblt.c @@ -53,6 +53,7 @@ SOFTWARE. #include #include "misc.h" #include +#include #include "dixfontstr.h" #include "gcstruct.h" #include "windowstr.h" diff --git a/miext/damage/damage.c b/miext/damage/damage.c index ce20169d4..746e7984f 100644 --- a/miext/damage/damage.c +++ b/miext/damage/damage.c @@ -32,6 +32,7 @@ #include #include "dixfontstr.h" #include +#include #include "mi.h" #include "regionstr.h" #include "globals.h" diff --git a/os/utils.c b/os/utils.c index 7fd395b2a..d09ca79fd 100644 --- a/os/utils.c +++ b/os/utils.c @@ -81,6 +81,7 @@ __stdcall unsigned long GetTickCount(void); #include #include "input.h" #include "dixfont.h" +#include #include "osdep.h" #include "extension.h" #ifdef X_POSIX_C_SOURCE From a1c80bb7d5871e1c5ee21fc650834858054103bf Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 30 May 2014 15:49:38 -0400 Subject: [PATCH 07/23] randr: Unexport some implementation details Acked-by: Chris Wilson Signed-off-by: Adam Jackson --- randr/randrstr.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/randr/randrstr.h b/randr/randrstr.h index 03974fd4f..472721a5a 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -64,10 +64,10 @@ typedef XID RROutput; typedef XID RRCrtc; typedef XID RRProvider; -extern _X_EXPORT int RREventBase, RRErrorBase; +extern int RREventBase, RRErrorBase; -extern _X_EXPORT int (*ProcRandrVector[RRNumberRequests]) (ClientPtr); -extern _X_EXPORT int (*SProcRandrVector[RRNumberRequests]) (ClientPtr); +extern int (*ProcRandrVector[RRNumberRequests]) (ClientPtr); +extern int (*SProcRandrVector[RRNumberRequests]) (ClientPtr); /* * Modeline for a monitor. Name follows directly after this struct @@ -397,8 +397,8 @@ typedef struct _RRClient { /* RRTimesRec times[0]; */ } RRClientRec, *RRClientPtr; -extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */ -extern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec; +extern RESTYPE RRClientType, RREventType; /* resource types for event masks */ +extern DevPrivateKeyRec RRClientPrivateKeyRec; #define RRClientPrivateKey (&RRClientPrivateKeyRec) extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType, RRProviderType; From 70b402be2626d4f4afb02b6f5baa543262548bd7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 30 May 2014 16:19:08 -0400 Subject: [PATCH 08/23] render: Hide/unexport some implementation details Acked-by: Chris Wilson Reviewed-by: Aaron Plattner Signed-off-by: Adam Jackson --- render/glyph.c | 10 ++++----- render/glyphstr.h | 36 +++++++++----------------------- render/mipict.c | 16 +++++++-------- render/mipict.h | 36 -------------------------------- render/picture.c | 24 +++++++++++----------- render/picture.h | 6 +++--- render/picturestr.h | 50 +++++---------------------------------------- 7 files changed, 43 insertions(+), 135 deletions(-) diff --git a/render/glyph.c b/render/glyph.c index f3310db12..ea865af58 100644 --- a/render/glyph.c +++ b/render/glyph.c @@ -106,7 +106,7 @@ GlyphUninit(ScreenPtr pScreen) } } -GlyphHashSetPtr +static GlyphHashSetPtr FindGlyphHashSet(CARD32 filled) { int i; @@ -117,7 +117,7 @@ FindGlyphHashSet(CARD32 filled) return 0; } -GlyphRefPtr +static GlyphRefPtr FindGlyphRef(GlyphHashPtr hash, CARD32 signature, Bool match, unsigned char sha1[20]) { @@ -245,7 +245,7 @@ FreeGlyphPicture(GlyphPtr glyph) } } -void +static void FreeGlyph(GlyphPtr glyph, int format) { CheckDuplicates(&globalGlyphs[format], "FreeGlyph"); @@ -383,7 +383,7 @@ AllocateGlyph(xGlyphInfo * gi, int fdepth) return 0; } -Bool +static Bool AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet) { hash->table = calloc(hashSet->size, sizeof(GlyphRefRec)); @@ -394,7 +394,7 @@ AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet) return TRUE; } -Bool +static Bool ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global) { CARD32 tableEntries; diff --git a/render/glyphstr.h b/render/glyphstr.h index 2df055dfd..2f51bd244 100644 --- a/render/glyphstr.h +++ b/render/glyphstr.h @@ -90,47 +90,31 @@ typedef struct _GlyphList { PictFormatPtr format; } GlyphListRec, *GlyphListPtr; -extern _X_EXPORT void +extern void GlyphUninit(ScreenPtr pScreen); -extern _X_EXPORT GlyphHashSetPtr FindGlyphHashSet(CARD32 filled); - -extern _X_EXPORT GlyphRefPtr -FindGlyphRef(GlyphHashPtr hash, - CARD32 signature, Bool match, unsigned char sha1[20]); - -extern _X_EXPORT GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format); - -extern _X_EXPORT int +extern GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format); +extern int HashGlyph(xGlyphInfo * gi, CARD8 *bits, unsigned long size, unsigned char sha1[20]); -extern _X_EXPORT void - FreeGlyph(GlyphPtr glyph, int format); - -extern _X_EXPORT void +extern void AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id); -extern _X_EXPORT Bool +extern Bool DeleteGlyph(GlyphSetPtr glyphSet, Glyph id); -extern _X_EXPORT GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id); +extern GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id); -extern _X_EXPORT GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format); +extern GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format); -extern _X_EXPORT Bool - AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet); - -extern _X_EXPORT Bool - ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global); - -extern _X_EXPORT Bool +extern Bool ResizeGlyphSet(GlyphSetPtr glyphSet, CARD32 change); -extern _X_EXPORT GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format); +extern GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format); -extern _X_EXPORT int +extern int FreeGlyphSet(void *value, XID gid); #define GLYPH_HAS_GLYPH_PICTURE_ACCESSOR 1 /* used for api compat */ diff --git a/render/mipict.c b/render/mipict.c index 2571fda17..4b855122e 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -46,7 +46,7 @@ miDestroyPicture(PicturePtr pPicture) RegionDestroy(pPicture->pCompositeClip); } -void +static void miDestroyPictureClip(PicturePtr pPicture) { if (pPicture->clientClip) @@ -54,7 +54,7 @@ miDestroyPictureClip(PicturePtr pPicture) pPicture->clientClip = NULL; } -int +static int miChangePictureClip(PicturePtr pPicture, int type, void *value, int n) { ScreenPtr pScreen = pPicture->pDrawable->pScreen; @@ -88,13 +88,13 @@ miChangePictureClip(PicturePtr pPicture, int type, void *value, int n) return Success; } -void +static void miChangePicture(PicturePtr pPicture, Mask mask) { return; } -void +static void miValidatePicture(PicturePtr pPicture, Mask mask) { DrawablePtr pDrawable = pPicture->pDrawable; @@ -211,13 +211,13 @@ miValidatePicture(PicturePtr pPicture, Mask mask) } } -int +static int miChangePictureTransform(PicturePtr pPicture, PictTransform * transform) { return Success; } -int +static int miChangePictureFilter(PicturePtr pPicture, int filter, xFixed * params, int nparams) { @@ -499,7 +499,7 @@ miRenderPixelToColor(PictFormatPtr format, CARD32 pixel, xRenderColor * color) } } -void +static void miTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -523,7 +523,7 @@ miTriStrip(CARD8 op, free(tris); } -void +static void miTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst, diff --git a/render/mipict.h b/render/mipict.h index 23ce9e8f6..3241be4b9 100644 --- a/render/mipict.h +++ b/render/mipict.h @@ -53,26 +53,6 @@ extern _X_EXPORT int extern _X_EXPORT void miDestroyPicture(PicturePtr pPicture); -extern _X_EXPORT void - miDestroyPictureClip(PicturePtr pPicture); - -extern _X_EXPORT int - miChangePictureClip(PicturePtr pPicture, int type, void *value, int n); - -extern _X_EXPORT void - miChangePicture(PicturePtr pPicture, Mask mask); - -extern _X_EXPORT void - miValidatePicture(PicturePtr pPicture, Mask mask); - -extern _X_EXPORT int - miChangePictureTransform(PicturePtr pPicture, PictTransform * transform); - -extern _X_EXPORT int - -miChangePictureFilter(PicturePtr pPicture, - int filter, xFixed * params, int nparams); - extern _X_EXPORT void miCompositeSourceValidate(PicturePtr pPicture); @@ -121,22 +101,6 @@ miCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor * color, int nRect, xRectangle *rects); -extern _X_EXPORT void - -miTriStrip(CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points); - -extern _X_EXPORT void - -miTriFan(CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points); - extern _X_EXPORT void miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box); diff --git a/render/picture.c b/render/picture.c index 60517a4ee..506aec419 100644 --- a/render/picture.c +++ b/render/picture.c @@ -61,7 +61,7 @@ PictureWindowFormat(WindowPtr pWindow) WindowGetVisual(pWindow)); } -Bool +static Bool PictureDestroyWindow(WindowPtr pWindow) { ScreenPtr pScreen = pWindow->drawable.pScreen; @@ -82,7 +82,7 @@ PictureDestroyWindow(WindowPtr pWindow) return ret; } -Bool +static Bool PictureCloseScreen(ScreenPtr pScreen) { PictureScreenPtr ps = GetPictureScreen(pScreen); @@ -102,7 +102,7 @@ PictureCloseScreen(ScreenPtr pScreen) return ret; } -void +static void PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef) { ScreenPtr pScreen = pColormap->pScreen; @@ -163,7 +163,7 @@ addFormat(FormatInitRec formats[256], int nformat, CARD32 format, CARD8 depth) #define Mask(n) ((1 << (n)) - 1) -PictFormatPtr +static PictFormatPtr PictureCreateDefaultFormats(ScreenPtr pScreen, int *nformatp) { int nformats, f; @@ -439,7 +439,7 @@ PictureFindVisual(ScreenPtr pScreen, VisualID visual) return 0; } -Bool +static Bool PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format) { PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); @@ -625,6 +625,12 @@ GetPictureBytes(void *value, XID id, ResourceSizePtr size) } } +static int +FreePictFormat(void *pPictFormat, XID pid) +{ + return Success; +} + Bool PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats) { @@ -724,7 +730,7 @@ PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats) return TRUE; } -void +static void SetPictureToDefaults(PicturePtr pPicture) { pPicture->refcnt = 1; @@ -1430,12 +1436,6 @@ FreePicture(void *value, XID pid) return Success; } -int -FreePictFormat(void *pPictFormat, XID pid) -{ - return Success; -} - /** * ReduceCompositeOp is used to choose simpler ops for cases where alpha * channels are always one and so math on the alpha channel per pixel becomes diff --git a/render/picture.h b/render/picture.h index 66c85c56f..087e54d7a 100644 --- a/render/picture.h +++ b/render/picture.h @@ -169,11 +169,11 @@ typedef enum _PictFormatShort { #define PictureCmapPolicyColor 3 #define PictureCmapPolicyAll 4 -extern _X_EXPORT int PictureCmapPolicy; +extern int PictureCmapPolicy; -extern _X_EXPORT int PictureParseCmapPolicy(const char *name); +extern int PictureParseCmapPolicy(const char *name); -extern _X_EXPORT int RenderErrBase; +extern int RenderErrBase; /* Fixed point updates from Carl Worth, USC, Information Sciences Institute */ diff --git a/render/picturestr.h b/render/picturestr.h index 177f87b80..33baef9bf 100644 --- a/render/picturestr.h +++ b/render/picturestr.h @@ -344,16 +344,14 @@ typedef struct _PictureScreen { } PictureScreenRec, *PictureScreenPtr; extern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec; - #define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec) extern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec; - #define PictureWindowPrivateKey (&PictureWindowPrivateKeyRec) -extern _X_EXPORT RESTYPE PictureType; -extern _X_EXPORT RESTYPE PictFormatType; -extern _X_EXPORT RESTYPE GlyphSetType; +extern RESTYPE PictureType; +extern RESTYPE PictFormatType; +extern RESTYPE GlyphSetType; #define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey)) #define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL) @@ -379,27 +377,12 @@ extern _X_EXPORT RESTYPE GlyphSetType; extern _X_EXPORT PictFormatPtr PictureWindowFormat(WindowPtr pWindow); -extern _X_EXPORT Bool - PictureDestroyWindow(WindowPtr pWindow); - -extern _X_EXPORT Bool - PictureCloseScreen(ScreenPtr pScreen); - -extern _X_EXPORT void - PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef); - -extern _X_EXPORT Bool - PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format); - extern _X_EXPORT Bool PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel); extern _X_EXPORT int PictureGetSubpixelOrder(ScreenPtr pScreen); -extern _X_EXPORT PictFormatPtr -PictureCreateDefaultFormats(ScreenPtr pScreen, int *nformatp); - extern _X_EXPORT PictFormatPtr PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual); @@ -415,14 +398,12 @@ extern _X_EXPORT int extern _X_EXPORT char *PictureGetFilterName(int id); extern _X_EXPORT int - PictureAddFilter(ScreenPtr pScreen, const char *filter, PictFilterValidateParamsProcPtr ValidateParams, int width, int height); extern _X_EXPORT Bool - PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias); extern _X_EXPORT Bool @@ -435,21 +416,16 @@ extern _X_EXPORT PictFilterPtr PictureFindFilter(ScreenPtr pScreen, char *name, int len); extern _X_EXPORT int - SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter, xFixed * params, int nparams); extern _X_EXPORT int - SetPictureFilter(PicturePtr pPicture, char *name, int len, xFixed * params, int nparams); extern _X_EXPORT Bool PictureFinishInit(void); -extern _X_EXPORT void - SetPictureToDefaults(PicturePtr pPicture); - extern _X_EXPORT PicturePtr CreatePicture(Picture pid, DrawablePtr pDrawable, @@ -457,7 +433,6 @@ CreatePicture(Picture pid, Mask mask, XID *list, ClientPtr client, int *error); extern _X_EXPORT int - ChangePicture(PicturePtr pPicture, Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client); @@ -467,7 +442,6 @@ SetPictureClipRects(PicturePtr pPicture, int xOrigin, int yOrigin, int nRect, xRectangle *rects); extern _X_EXPORT int - SetPictureClipRegion(PicturePtr pPicture, int xOrigin, int yOrigin, RegionPtr pRegion); @@ -480,11 +454,7 @@ extern _X_EXPORT void extern _X_EXPORT int FreePicture(void *pPicture, XID pid); -extern _X_EXPORT int - FreePictFormat(void *pPictFormat, XID pid); - extern _X_EXPORT void - CompositePicture(CARD8 op, PicturePtr pSrc, PicturePtr pMask, @@ -496,7 +466,6 @@ CompositePicture(CARD8 op, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height); extern _X_EXPORT void - CompositeGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -505,13 +474,11 @@ CompositeGlyphs(CARD8 op, INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs); extern _X_EXPORT void - CompositeRects(CARD8 op, PicturePtr pDst, xRenderColor * color, int nRect, xRectangle *rects); extern _X_EXPORT void - CompositeTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -519,7 +486,6 @@ CompositeTrapezoids(CARD8 op, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps); extern _X_EXPORT void - CompositeTriangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -528,7 +494,6 @@ CompositeTriangles(CARD8 op, INT16 ySrc, int ntriangles, xTriangle * triangles); extern _X_EXPORT void - CompositeTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -536,7 +501,6 @@ CompositeTriStrip(CARD8 op, INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points); extern _X_EXPORT void - CompositeTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst, @@ -547,12 +511,10 @@ Bool AnimCurInit(ScreenPtr pScreen); int - AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor, ClientPtr client, XID cid); extern _X_EXPORT void - AddTraps(PicturePtr pPicture, INT16 xOff, INT16 yOff, int ntraps, xTrap * traps); @@ -583,8 +545,8 @@ CreateConicalGradientPicture(Picture pid, xFixed * stops, xRenderColor * colors, int *error); #ifdef PANORAMIX -extern _X_EXPORT void PanoramiXRenderInit(void); -extern _X_EXPORT void PanoramiXRenderReset(void); +extern void PanoramiXRenderInit(void); +extern void PanoramiXRenderReset(void); #endif /* @@ -592,12 +554,10 @@ extern _X_EXPORT void PanoramiXRenderReset(void); */ extern _X_EXPORT void - PictTransform_from_xRenderTransform(PictTransformPtr pict, xRenderTransform * render); extern _X_EXPORT void - xRenderTransform_from_PictTransform(xRenderTransform * render, PictTransformPtr pict); From b5fbe9c6327fac88c09afce598238a7534521b69 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 8 Jul 2014 13:37:34 -0400 Subject: [PATCH 09/23] xfree86: Hide some pre-randr mode validation details Acked-by: Chris Wilson Reviewed-by: Aaron Plattner Signed-off-by: Adam Jackson --- hw/xfree86/common/xf86.h | 11 ------ hw/xfree86/common/xf86Mode.c | 11 +++--- hw/xfree86/doc/ddxDesign.xml | 75 ------------------------------------ 3 files changed, 5 insertions(+), 92 deletions(-) diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index 49ff35b86..1cde47873 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -368,22 +368,11 @@ xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth); /* xf86Mode.c */ -extern _X_EXPORT int -xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, - int DivFactor, int MulFactor, int *divider); extern _X_EXPORT const char * xf86ModeStatusToString(ModeStatus status); extern _X_EXPORT ModeStatus -xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, - ClockRangePtr clockRanges, LookupModeFlags strategy); -extern _X_EXPORT ModeStatus xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor); extern _X_EXPORT ModeStatus -xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, - ClockRangePtr clockRanges, - LookupModeFlags strategy, - int maxPitch, int virtualX, int virtualY); -extern _X_EXPORT ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags); extern _X_EXPORT int xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes, diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c index 9a5550faf..3f446ae3b 100644 --- a/hw/xfree86/common/xf86Mode.c +++ b/hw/xfree86/common/xf86Mode.c @@ -112,11 +112,10 @@ printModeRejectMessage(int index, DisplayModePtr p, int status) } /* - * xf86GetNearestClock -- - * Find closest clock to given frequency (in kHz). This assumes the - * number of clocks is greater than zero. + * Find closest clock to given frequency (in kHz). This assumes the + * number of clocks is greater than zero. */ -int +static int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, int DivFactor, int MulFactor, int *divider) { @@ -451,7 +450,7 @@ xf86HandleBuiltinMode(ScrnInfoPtr scrp, * reason. */ -ModeStatus +static ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, ClockRangePtr clockRanges, LookupModeFlags strategy) { @@ -845,7 +844,7 @@ xf86CheckModeSize(ScrnInfoPtr scrp, int w, int x, int y) * maxVValue maximum vertical timing value */ -ModeStatus +static ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, ClockRangePtr clockRanges, LookupModeFlags strategy, diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml index 6a9de9e7f..aed77a9f0 100644 --- a/hw/xfree86/doc/ddxDesign.xml +++ b/hw/xfree86/doc/ddxDesign.xml @@ -6955,28 +6955,6 @@ and needs to do its own mode validation, it might be able to make use of some of these secondary mode helper functions. -
- - int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2, - int *divider); - -
- This function returns the index of the closest clock to the - frequency freq given (in kHz). It assumes that - the number of clocks is greater than zero. It requires that the - numClocks and clock fields of the - ScrnInfoRec are initialised. The - allowDiv2 field determines if the clocks can be - halved. The *divider return value indicates - whether clock division is used when determining the clock returned. - - - - This function is only for non-programmable clocks. - - -
-
const char *xf86ModeStatusToString(ModeStatus status); @@ -6988,59 +6966,6 @@ use of some of these secondary mode helper functions.
-
- - ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep, - ClockRangePtr clockRanges, LookupModeFlags strategy); - -
- This function takes a pointer to a mode with the name filled in, - and looks for a mode in the modePool list which - matches. The parameters of the matching mode are filled in to - *modep. The clockRanges and - strategy parameters are as for the - xf86ValidateModes() function above. - - - - This function requires the modePool, - clock[], numClocks and - progClock fields of the ScrnInfoRec - to be initialised before being called. - - - - The return value is MODE_OK if a mode was found. - Otherwise it indicates why a matching mode could not be found. - - -
- -
- - ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, - DisplayModePtr mode, ClockRangePtr clockRanges, - LookupModeFlags strategy, int maxPitch, - int virtualX, int virtualY); - -
- This function checks the passed mode against some basic driver - constraints. Apart from the ones passed explicitly, the - maxHValue and maxVValue fields of - the ScrnInfoRec are also used. If the - ValidMode field of the ScrnInfoRec - is set, that function is also called to check the mode. Next, the - mode is checked against the monitor's constraints. - - - - If the mode is consistent with all constraints, the return value - is MODE_OK. Otherwise the return value indicates - which constraint wasn't met. - - -
-
void xf86DeleteMode(DisplayModePtr *modeList, DisplayModePtr mode); From 2377690709de11087edc9d1116c9feaeb8f118ed Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 8 Jul 2014 14:03:13 -0400 Subject: [PATCH 10/23] dga: Hide a bunch of implementation details Acked-by: Chris Wilson Reviewed-by: Aaron Plattner Signed-off-by: Adam Jackson --- hw/xfree86/common/dgaproc.h | 60 ++++++------------------------------- hw/xfree86/common/xf86DGA.c | 36 +++++++++++----------- hw/xfree86/sdksyms.sh | 6 ---- 3 files changed, 27 insertions(+), 75 deletions(-) diff --git a/hw/xfree86/common/dgaproc.h b/hw/xfree86/common/dgaproc.h index 87e923f26..7925bd483 100644 --- a/hw/xfree86/common/dgaproc.h +++ b/hw/xfree86/common/dgaproc.h @@ -54,57 +54,15 @@ typedef struct { /* DDX interface */ -extern _X_EXPORT int - DGASetMode(int Index, int num, XDGAModePtr mode, PixmapPtr *pPix); +extern Bool DGAScreenAvailable(ScreenPtr pScreen); +extern Bool DGAActive(int Index); +extern void DGAShutdown(void); -extern _X_EXPORT void - DGASetInputMode(int Index, Bool keyboard, Bool mouse); - -extern _X_EXPORT void - DGASelectInput(int Index, ClientPtr client, long mask); - -extern _X_EXPORT Bool DGAAvailable(int Index); -extern _X_EXPORT Bool DGAScreenAvailable(ScreenPtr pScreen); -extern _X_EXPORT Bool DGAActive(int Index); -extern _X_EXPORT void DGAShutdown(void); -extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap); -extern _X_EXPORT int DGAGetViewportStatus(int Index); -extern _X_EXPORT int DGASync(int Index); - -extern _X_EXPORT int - DGAFillRect(int Index, int x, int y, int w, int h, unsigned long color); - -extern _X_EXPORT int - DGABlitRect(int Index, int srcx, int srcy, int w, int h, int dstx, int dsty); - -extern _X_EXPORT int - -DGABlitTransRect(int Index, - int srcx, int srcy, - int w, int h, int dstx, int dsty, unsigned long color); - -extern _X_EXPORT int - DGASetViewport(int Index, int x, int y, int mode); - -extern _X_EXPORT int DGAGetModes(int Index); -extern _X_EXPORT int DGAGetOldDGAMode(int Index); - -extern _X_EXPORT int DGAGetModeInfo(int Index, XDGAModePtr mode, int num); - -extern _X_EXPORT Bool DGAVTSwitch(void); -extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, - int button, int is_down); -extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, - int dy); -extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, - int key_code, int is_down); - -extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, - unsigned char **mem, int *size, - int *offset, int *flags); -extern _X_EXPORT void DGACloseFramebuffer(int Index); -extern _X_EXPORT Bool DGAChangePixmapMode(int Index, int *x, int *y, int mode); -extern _X_EXPORT int DGACreateColormap(int Index, ClientPtr client, int id, - int mode, int alloc); +extern Bool DGAVTSwitch(void); +extern Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, + int button, int is_down); +extern Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy); +extern Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, + int key_code, int is_down); #endif /* __DGAPROC_H */ diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c index 9533e1c52..c689dcb73 100644 --- a/hw/xfree86/common/xf86DGA.c +++ b/hw/xfree86/common/xf86DGA.c @@ -471,7 +471,7 @@ xf86SetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet) /*********** exported ones ***************/ -void +static void DGASetInputMode(int index, Bool keyboard, Bool mouse) { ScreenPtr pScreen = screenInfo.screens[index]; @@ -488,7 +488,7 @@ DGASetInputMode(int index, Bool keyboard, Bool mouse) } } -Bool +static Bool DGAChangePixmapMode(int index, int *x, int *y, int mode) { DGAScreenPtr pScreenPriv; @@ -560,7 +560,7 @@ DGAScreenAvailable(ScreenPtr pScreen) return FALSE; } -Bool +static Bool DGAAvailable(int index) { ScreenPtr pScreen; @@ -606,7 +606,7 @@ DGAShutdown(void) /* Called by the extension to initialize a mode */ -int +static int DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix) { ScrnInfoPtr pScrn = xf86Screens[index]; @@ -626,7 +626,7 @@ DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix) /* Called from the extension to let the DDX know which events are requested */ -void +static void DGASelectInput(int index, ClientPtr client, long mask) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -636,7 +636,7 @@ DGASelectInput(int index, ClientPtr client, long mask) pScreenPriv->input = mask; } -int +static int DGAGetViewportStatus(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -649,7 +649,7 @@ DGAGetViewportStatus(int index) return (*pScreenPriv->funcs->GetViewport) (pScreenPriv->pScrn); } -int +static int DGASetViewport(int index, int x, int y, int mode) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -675,7 +675,7 @@ BitsClear(CARD32 data) return bits; } -int +static int DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc) { ScreenPtr pScreen = screenInfo.screens[index]; @@ -744,7 +744,7 @@ DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc) /* Called by the extension to install a colormap on DGA active screens */ -void +static void DGAInstallCmap(ColormapPtr cmap) { ScreenPtr pScreen = cmap->pScreen; @@ -760,7 +760,7 @@ DGAInstallCmap(ColormapPtr cmap) (*pScreen->InstallColormap) (cmap); } -int +static int DGASync(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -773,7 +773,7 @@ DGASync(int index) return Success; } -int +static int DGAFillRect(int index, int x, int y, int w, int h, unsigned long color) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -789,7 +789,7 @@ DGAFillRect(int index, int x, int y, int w, int h, unsigned long color) return BadMatch; } -int +static int DGABlitRect(int index, int srcx, int srcy, int w, int h, int dstx, int dsty) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -806,7 +806,7 @@ DGABlitRect(int index, int srcx, int srcy, int w, int h, int dstx, int dsty) return BadMatch; } -int +static int DGABlitTransRect(int index, int srcx, int srcy, int w, int h, int dstx, int dsty, unsigned long color) @@ -826,7 +826,7 @@ DGABlitTransRect(int index, return BadMatch; } -int +static int DGAGetModes(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -836,7 +836,7 @@ DGAGetModes(int index) return pScreenPriv->numModes; } -int +static int DGAGetModeInfo(int index, XDGAModePtr mode, int num) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -1126,7 +1126,7 @@ DGAProcessPointerEvent(ScreenPtr pScreen, DGAEvent * event, DeviceIntPtr mouse) } } -Bool +static Bool DGAOpenFramebuffer(int index, char **name, unsigned char **mem, int *size, int *offset, int *flags) @@ -1140,7 +1140,7 @@ DGAOpenFramebuffer(int index, flags); } -void +static void DGACloseFramebuffer(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); @@ -1152,7 +1152,7 @@ DGACloseFramebuffer(int index) /* For DGA 1.0 backwards compatibility only */ -int +static int DGAGetOldDGAMode(int index) { DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]); diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index e1415229c..334ed241f 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -180,12 +180,6 @@ cat > sdksyms.c << EOF #endif -/* hw/xfree86/dixmods/extmod/Makefile.am -- module */ -#ifdef XFreeXDGA -#include "dgaproc.h" -#endif - - /* hw/xfree86/parser/Makefile.am */ #include "xf86Parser.h" #include "xf86Optrec.h" From 49d7bae7f4c6a93f92df828440e3478513f930f4 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 8 Jul 2014 14:18:07 -0400 Subject: [PATCH 11/23] xge: Hide some implementation details Acked-by: Chris Wilson Signed-off-by: Adam Jackson --- Xext/geext.c | 10 ++++++---- Xext/geint.h | 5 +---- hw/xfree86/sdksyms.sh | 1 - 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Xext/geext.c b/Xext/geext.c index aee68c41d..6285f69f7 100644 --- a/Xext/geext.c +++ b/Xext/geext.c @@ -90,9 +90,10 @@ ProcGEQueryVersion(ClientPtr client) return Success; } -int (*ProcGEVector[GENumberRequests]) (ClientPtr) = { +static int (*ProcGEVector[GENumberRequests]) (ClientPtr) = { /* Version 1.0 */ -ProcGEQueryVersion}; + ProcGEQueryVersion, +}; /************************************************************/ /* swapped request handlers */ @@ -109,9 +110,10 @@ SProcGEQueryVersion(ClientPtr client) return (*ProcGEVector[stuff->ReqType]) (client); } -int (*SProcGEVector[GENumberRequests]) (ClientPtr) = { +static int (*SProcGEVector[GENumberRequests]) (ClientPtr) = { /* Version 1.0 */ -SProcGEQueryVersion}; + SProcGEQueryVersion +}; /************************************************************/ /* callbacks */ diff --git a/Xext/geint.h b/Xext/geint.h index f76d14809..0ee28e471 100644 --- a/Xext/geint.h +++ b/Xext/geint.h @@ -37,7 +37,7 @@ #include "extnsionst.h" #include -extern _X_EXPORT DevPrivateKeyRec GEClientPrivateKeyRec; +extern DevPrivateKeyRec GEClientPrivateKeyRec; #define GEClientPrivateKey (&GEClientPrivateKeyRec) @@ -48,7 +48,4 @@ typedef struct _GEClientInfo { #define GEGetClient(pClient) ((GEClientInfoPtr)(dixLookupPrivate(&((pClient)->devPrivates), GEClientPrivateKey))) -extern _X_EXPORT int (*ProcGEVector[ /*GENumRequests */ ]) (ClientPtr); -extern _X_EXPORT int (*SProcGEVector[ /*GENumRequests */ ]) (ClientPtr); - #endif /* _GEINT_H_ */ diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index 334ed241f..ed55cbb0d 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -54,7 +54,6 @@ cat > sdksyms.c << EOF #include "xvmcext.h" #endif #include "geext.h" -#include "geint.h" #ifdef MITSHM #include "shmint.h" #endif From 4da66d9e0399141feffd5f002e4195a438fe5020 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 8 Jul 2014 14:27:02 -0400 Subject: [PATCH 12/23] vidmode: Hide implementation details Also remove vidmodeproc.h from the SDK since no drivers are using it. Acked-by: Chris Wilson Signed-off-by: Adam Jackson --- hw/xfree86/common/Makefile.am | 1 - hw/xfree86/common/vidmodeproc.h | 77 ++++++++++++++++----------------- hw/xfree86/common/xf86VidMode.c | 2 +- hw/xfree86/sdksyms.sh | 3 -- 4 files changed, 39 insertions(+), 44 deletions(-) diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am index 54e7f4d0a..3bc0046aa 100644 --- a/hw/xfree86/common/Makefile.am +++ b/hw/xfree86/common/Makefile.am @@ -16,7 +16,6 @@ endif if XF86VIDMODE XF86VMODESOURCES = xf86vmode.c -XF86VMODE_SDK = vidmodeproc.h endif if DGA diff --git a/hw/xfree86/common/vidmodeproc.h b/hw/xfree86/common/vidmodeproc.h index cff340c47..59d714c77 100644 --- a/hw/xfree86/common/vidmodeproc.h +++ b/hw/xfree86/common/vidmodeproc.h @@ -41,44 +41,43 @@ typedef union { extern Bool VidModeExtensionInit(ScreenPtr pScreen); -extern _X_EXPORT Bool VidModeAvailable(int scrnIndex); -extern _X_EXPORT Bool VidModeGetCurrentModeline(int scrnIndex, void **mode, - int *dotClock); -extern _X_EXPORT Bool VidModeGetFirstModeline(int scrnIndex, void **mode, - int *dotClock); -extern _X_EXPORT Bool VidModeGetNextModeline(int scrnIndex, void **mode, - int *dotClock); -extern _X_EXPORT Bool VidModeDeleteModeline(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeZoomViewport(int scrnIndex, int zoom); -extern _X_EXPORT Bool VidModeGetViewPort(int scrnIndex, int *x, int *y); -extern _X_EXPORT Bool VidModeSetViewPort(int scrnIndex, int x, int y); -extern _X_EXPORT Bool VidModeSwitchMode(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeLockZoom(int scrnIndex, Bool lock); -extern _X_EXPORT Bool VidModeGetMonitor(int scrnIndex, void **monitor); -extern _X_EXPORT int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock); -extern _X_EXPORT Bool VidModeGetClocks(int scrnIndex, int *Clocks); -extern _X_EXPORT ModeStatus VidModeCheckModeForMonitor(int scrnIndex, - void *mode); -extern _X_EXPORT ModeStatus VidModeCheckModeForDriver(int scrnIndex, - void *mode); -extern _X_EXPORT void VidModeSetCrtcForMode(int scrnIndex, void *mode); -extern _X_EXPORT Bool VidModeAddModeline(int scrnIndex, void *mode); -extern _X_EXPORT int VidModeGetDotClock(int scrnIndex, int Clock); -extern _X_EXPORT int VidModeGetNumOfModes(int scrnIndex); -extern _X_EXPORT Bool VidModeSetGamma(int scrnIndex, float red, float green, - float blue); -extern _X_EXPORT Bool VidModeGetGamma(int scrnIndex, float *red, float *green, - float *blue); -extern _X_EXPORT void *VidModeCreateMode(void); -extern _X_EXPORT void VidModeCopyMode(void *modefrom, void *modeto); -extern _X_EXPORT int VidModeGetModeValue(void *mode, int valtyp); -extern _X_EXPORT void VidModeSetModeValue(void *mode, int valtyp, int val); -extern _X_EXPORT vidMonitorValue VidModeGetMonitorValue(void *monitor, - int valtyp, int indx); -extern _X_EXPORT Bool VidModeSetGammaRamp(int, int, CARD16 *, CARD16 *, - CARD16 *); -extern _X_EXPORT Bool VidModeGetGammaRamp(int, int, CARD16 *, CARD16 *, - CARD16 *); -extern _X_EXPORT int VidModeGetGammaRampSize(int scrnIndex); +extern Bool VidModeGetCurrentModeline(int scrnIndex, void **mode, + int *dotClock); +extern Bool VidModeGetFirstModeline(int scrnIndex, void **mode, + int *dotClock); +extern Bool VidModeGetNextModeline(int scrnIndex, void **mode, + int *dotClock); +extern Bool VidModeDeleteModeline(int scrnIndex, void *mode); +extern Bool VidModeZoomViewport(int scrnIndex, int zoom); +extern Bool VidModeGetViewPort(int scrnIndex, int *x, int *y); +extern Bool VidModeSetViewPort(int scrnIndex, int x, int y); +extern Bool VidModeSwitchMode(int scrnIndex, void *mode); +extern Bool VidModeLockZoom(int scrnIndex, Bool lock); +extern Bool VidModeGetMonitor(int scrnIndex, void **monitor); +extern int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock); +extern Bool VidModeGetClocks(int scrnIndex, int *Clocks); +extern ModeStatus VidModeCheckModeForMonitor(int scrnIndex, + void *mode); +extern ModeStatus VidModeCheckModeForDriver(int scrnIndex, + void *mode); +extern void VidModeSetCrtcForMode(int scrnIndex, void *mode); +extern Bool VidModeAddModeline(int scrnIndex, void *mode); +extern int VidModeGetDotClock(int scrnIndex, int Clock); +extern int VidModeGetNumOfModes(int scrnIndex); +extern Bool VidModeSetGamma(int scrnIndex, float red, float green, + float blue); +extern Bool VidModeGetGamma(int scrnIndex, float *red, float *green, + float *blue); +extern void *VidModeCreateMode(void); +extern void VidModeCopyMode(void *modefrom, void *modeto); +extern int VidModeGetModeValue(void *mode, int valtyp); +extern void VidModeSetModeValue(void *mode, int valtyp, int val); +extern vidMonitorValue VidModeGetMonitorValue(void *monitor, + int valtyp, int indx); +extern Bool VidModeSetGammaRamp(int, int, CARD16 *, CARD16 *, + CARD16 *); +extern Bool VidModeGetGammaRamp(int, int, CARD16 *, CARD16 *, + CARD16 *); +extern int VidModeGetGammaRampSize(int scrnIndex); #endif diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c index e708b2792..10c7b4b40 100644 --- a/hw/xfree86/common/xf86VidMode.c +++ b/hw/xfree86/common/xf86VidMode.c @@ -111,7 +111,7 @@ VidModeClose(ScreenPtr pScreen) return pScreen->CloseScreen(pScreen); } -Bool +static Bool VidModeAvailable(int scrnIndex) { ScrnInfoPtr pScrn; diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index ed55cbb0d..5391b72dd 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -136,9 +136,6 @@ cat > sdksyms.c << EOF # include "xf86xvmc.h" # include "xf86xvpriv.h" #endif -#if XF86VIDMODE -# include "vidmodeproc.h" -#endif #include "xorgVersion.h" #if defined(__sparc__) || defined(__sparc) # include "xf86sbusBus.h" From 36fac0dd1a9a9cf41b631cf7e1ea015bcf920db7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 23 May 2014 13:23:20 -0400 Subject: [PATCH 13/23] xfixes: Unexport xfixes.h There's nothing a driver could want to use this for. Acked-by: Chris Wilson Signed-off-by: Adam Jackson --- hw/vfb/Makefile.am | 1 - xfixes/Makefile.am | 4 ---- xfixes/xfixes.h | 6 +++--- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/hw/vfb/Makefile.am b/hw/vfb/Makefile.am index f0f9fee47..c9ac35e9d 100644 --- a/hw/vfb/Makefile.am +++ b/hw/vfb/Makefile.am @@ -21,7 +21,6 @@ XVFB_LIBS = \ Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS) Xvfb_DEPENDENCIES = $(XVFB_LIBS) -Xvfb_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) relink: $(AM_V_at)rm -f Xvfb$(EXEEXT) && $(MAKE) Xvfb$(EXEEXT) diff --git a/xfixes/Makefile.am b/xfixes/Makefile.am index a8425e8ea..2a95c065b 100644 --- a/xfixes/Makefile.am +++ b/xfixes/Makefile.am @@ -2,10 +2,6 @@ noinst_LTLIBRARIES = libxfixes.la AM_CFLAGS = $(DIX_CFLAGS) -if XORG -sdk_HEADERS = xfixes.h -endif - libxfixes_la_SOURCES = \ cursor.c \ region.c \ diff --git a/xfixes/xfixes.h b/xfixes/xfixes.h index fdcf44f3f..23f31cde4 100644 --- a/xfixes/xfixes.h +++ b/xfixes/xfixes.h @@ -29,8 +29,8 @@ #include "resource.h" -extern _X_EXPORT RESTYPE RegionResType; -extern _X_EXPORT int XFixesErrorBase; +extern RESTYPE RegionResType; +extern int XFixesErrorBase; #define VERIFY_REGION(pRegion, rid, client, mode) \ do { \ @@ -48,7 +48,7 @@ extern _X_EXPORT int XFixesErrorBase; if (rid) VERIFY_REGION(pRegion, rid, client, mode); \ } -extern _X_EXPORT RegionPtr +extern RegionPtr XFixesRegionCopy(RegionPtr pRegion); #include "xibarriers.h" From 6f3332b9f411fd7ac9cab0085faa56f6c2ff3323 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 14/23] dix: unifdef pWin->rootlessUnhittable No reason to vary the dix ABI over this. Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- dix/window.c | 5 +---- include/windowstr.h | 4 +--- mi/miwindow.c | 5 +---- miext/rootless/rootlessWindow.c | 8 ++++---- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/dix/window.c b/dix/window.c index d49276c98..1b44305c9 100644 --- a/dix/window.c +++ b/dix/window.c @@ -380,10 +380,7 @@ SetWindowToDefaults(WindowPtr pWin) pWin->forcedBS = FALSE; pWin->redirectDraw = RedirectDrawNone; pWin->forcedBG = FALSE; - -#ifdef ROOTLESS - pWin->rootlessUnhittable = FALSE; -#endif + pWin->unhittable = FALSE; #ifdef COMPOSITE pWin->damagedDescendants = FALSE; diff --git a/include/windowstr.h b/include/windowstr.h index 53eef376e..4383dabdc 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -162,9 +162,7 @@ typedef struct _Window { unsigned forcedBS:1; /* system-supplied backingStore */ unsigned redirectDraw:2; /* COMPOSITE rendering redirect */ unsigned forcedBG:1; /* must have an opaque background */ -#ifdef ROOTLESS - unsigned rootlessUnhittable:1; /* doesn't hit-test */ -#endif + unsigned unhittable:1; /* doesn't hit-test, for rootless */ #ifdef COMPOSITE unsigned damagedDescendants:1; /* some descendants are damaged */ unsigned inhibitBGPaint:1; /* paint the background? */ diff --git a/mi/miwindow.c b/mi/miwindow.c index 7574239f5..2fc7cfb79 100644 --- a/mi/miwindow.c +++ b/mi/miwindow.c @@ -767,14 +767,11 @@ miSpriteTrace(SpritePtr pSprite, int x, int y) RegionContainsPoint(wInputShape(pWin), x - pWin->drawable.x, y - pWin->drawable.y, &box)) -#ifdef ROOTLESS /* In rootless mode windows may be offscreen, even when * they're in X's stack. (E.g. if the native window system * implements some form of virtual desktop system). */ - && !pWin->rootlessUnhittable -#endif - ) { + && !pWin->unhittable) { if (pSprite->spriteTraceGood >= pSprite->spriteTraceSize) { pSprite->spriteTraceSize += 10; pSprite->spriteTrace = reallocarray(pSprite->spriteTrace, diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 1f78e3f6c..3240acce5 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -92,7 +92,7 @@ RootlessNativeWindowStateChanged(WindowPtr pWin, unsigned int state) winRec->is_offscreen = ((state & XP_WINDOW_STATE_OFFSCREEN) != 0); winRec->is_obscured = ((state & XP_WINDOW_STATE_OBSCURED) != 0); - pWin->rootlessUnhittable = winRec->is_offscreen; + pWin->unhittable = winRec->is_offscreen; } void @@ -569,7 +569,7 @@ RootlessReorderWindow(WindowPtr pWin) newPrevW = pWin->prevSib; while (newPrevW && (WINREC(newPrevW) == NULL || !newPrevW->realized || - newPrevW->rootlessUnhittable != pWin->rootlessUnhittable)) + newPrevW->unhittable != pWin->unhittable)) newPrevW = newPrevW->prevSib; newPrev = newPrevW != NULL ? WINREC(newPrevW) : NULL; @@ -1365,7 +1365,7 @@ RootlessReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) pTopWin = TopLevelParent(pWin); assert(pTopWin != pWin); - pWin->rootlessUnhittable = FALSE; + pWin->unhittable = FALSE; DeleteProperty(serverClient, pWin, xa_native_window_id()); @@ -1503,7 +1503,7 @@ RootlessOrderAllWindows(Bool include_unhitable) continue; if (RootlessEnsureFrame(pWin) == NULL) continue; - if (!include_unhitable && pWin->rootlessUnhittable) + if (!include_unhitable && pWin->unhittable) continue; RootlessReorderWindow(pWin); } From bdc917a41691250701ccc9a0b087448b50892fa9 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 15/23] rootless: Genericize the config header a bit ROOTLESS_RESIZE_GRAVITY is an optimization, so let's default it to off unless the backing window system is known to support it. ROOTLESS_PROTECT_ALPHA looks like it has different values for xquartz and win32, but hilariously rootlessGC.c merely checks if it is defined, not what the value is. It's effectively the more conservative path anyway, so let's just turn it on. Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- miext/rootless/rootlessConfig.h | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/miext/rootless/rootlessConfig.h b/miext/rootless/rootlessConfig.h index d39ae63d2..4c464b9f5 100644 --- a/miext/rootless/rootlessConfig.h +++ b/miext/rootless/rootlessConfig.h @@ -35,28 +35,17 @@ #define _ROOTLESSCONFIG_H #ifdef __APPLE__ +#define ROOTLESS_RESIZE_GRAVITY TRUE +#endif + +/*# define ROOTLESSDEBUG*/ #define ROOTLESS_PROTECT_ALPHA TRUE #define ROOTLESS_REDISPLAY_DELAY 10 -#define ROOTLESS_RESIZE_GRAVITY TRUE -/*# define ROOTLESSDEBUG*/ /* Bit mask for alpha channel with a particular number of bits per pixel. Note that we only care for 32bpp data. Mac OS X uses planar alpha for 16bpp. */ #define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0) -#endif /* __APPLE__ */ - -#if defined(__CYGWIN__) || defined(WIN32) - -#define ROOTLESS_PROTECT_ALPHA NO -#define ROOTLESS_REDISPLAY_DELAY 10 -#undef ROOTLESS_RESIZE_GRAVITY -/*# define ROOTLESSDEBUG*/ - -#define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0) - -#endif /* __CYGWIN__ */ - #endif /* _ROOTLESSCONFIG_H */ From 1594fb912996e9776d9e36383bd1d9f5dd2877eb Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 16/23] rootless: Build unconditionally It's not a lot of code, and if you're doing things to the core that affect rootless you should be alerted early. Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- miext/Makefile.am | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/miext/Makefile.am b/miext/Makefile.am index b84adc12b..add4d18b0 100644 --- a/miext/Makefile.am +++ b/miext/Makefile.am @@ -1,8 +1 @@ -SUBDIRS = sync damage shadow -if XQUARTZ -SUBDIRS += rootless -endif -if XWIN_MULTIWINDOWEXTWM -SUBDIRS += rootless -endif -DIST_SUBDIRS = sync damage shadow rootless +SUBDIRS = sync damage shadow rootless From 315661a425018a546f7bcc18ad3e5f4578473ca6 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 17/23] fb: Make rootless-agnostic Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- fb/fb.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fb/fb.h b/fb/fb.h index ab110f327..c687aa7a0 100644 --- a/fb/fb.h +++ b/fb/fb.h @@ -472,13 +472,8 @@ typedef struct { #define fbGetWindowPixmap(pWin) ((PixmapPtr)\ dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin))) -#ifdef ROOTLESS #define __fbPixDrawableX(pPix) ((pPix)->drawable.x) #define __fbPixDrawableY(pPix) ((pPix)->drawable.y) -#else -#define __fbPixDrawableX(pPix) 0 -#define __fbPixDrawableY(pPix) 0 -#endif #ifdef COMPOSITE #define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x) From 74d64ceea02bffad1caf3d1a727edbd38d968059 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 18/23] mi: Remove questionable optimization from the rootless path This is effectively a revert of 7b506fdc840aebed6b5acb91437a2cb620b5bddc except the coding style reindent broke that. The code makes no sense in any case. drawable can never be null since it's the first member of WindowRec, and we're never called with a null window. Neither can it be an UNDRAWABLE_WINDOW since those are InputOnly windows; the rootless code does not set the root window to either UNDRAWABLE or InputOnly, so. Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- mi/miexpose.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/mi/miexpose.c b/mi/miexpose.c index 4124d67c6..f4c6e89a0 100644 --- a/mi/miexpose.c +++ b/mi/miexpose.c @@ -438,9 +438,6 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) DrawablePtr drawable = &pWin->drawable; #ifdef ROOTLESS - if (!drawable || drawable->type == UNDRAWABLE_WINDOW) - return; - if (IsFramedWindow(pWin)) { RootlessStartDrawing(pWin); RootlessDamageRegion(pWin, prgn); From cbd3cfbad3f07b20e90ea9498110f255813eb441 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2015 13:58:30 -0400 Subject: [PATCH 19/23] dix: Restore PaintWindow screen hook Removes the last cpp conditional on ROOTLESS from dix code. Reviewed-by: Jasper St. Pierre Signed-off-by: Adam Jackson --- composite/compwindow.c | 2 +- dix/window.c | 4 ++-- hw/xquartz/quartz.c | 4 ++-- hw/xwin/winrandr.c | 2 +- include/scrnintstr.h | 5 +++++ mi/miexpose.c | 32 +++++--------------------------- mi/mioverlay.c | 12 +++++++----- mi/miscrinit.c | 1 + mi/miwindow.c | 6 ++++-- miext/rootless/rootlessCommon.h | 1 + miext/rootless/rootlessScreen.c | 3 ++- miext/rootless/rootlessWindow.c | 23 ++++++++++++++++++++++- miext/rootless/rootlessWindow.h | 1 + 13 files changed, 54 insertions(+), 42 deletions(-) diff --git a/composite/compwindow.c b/composite/compwindow.c index 77bdfa23c..344138ad7 100644 --- a/composite/compwindow.c +++ b/composite/compwindow.c @@ -104,7 +104,7 @@ compRepaintBorder(ClientPtr pClient, void *closure) RegionNull(&exposed); RegionSubtract(&exposed, &pWindow->borderClip, &pWindow->winSize); - miPaintWindow(pWindow, &exposed, PW_BORDER); + pWindow->drawable.pScreen->PaintWindow(pWindow, &exposed, PW_BORDER); RegionUninit(&exposed); } return TRUE; diff --git a/dix/window.c b/dix/window.c index 1b44305c9..d57f320f8 100644 --- a/dix/window.c +++ b/dix/window.c @@ -1467,7 +1467,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) RegionNull(&exposed); RegionSubtract(&exposed, &pWin->borderClip, &pWin->winSize); - miPaintWindow(pWin, &exposed, PW_BORDER); + pWin->drawable.pScreen->PaintWindow(pWin, &exposed, PW_BORDER); RegionUninit(&exposed); } return error; @@ -3034,7 +3034,7 @@ dixSaveScreens(ClientPtr client, int on, int mode) /* make it look like screen saver is off, so that * NotClippedByChildren will compute a clip list - * for the root window, so miPaintWindow works + * for the root window, so PaintWindow works */ screenIsSaved = SCREEN_SAVER_OFF; (*pWin->drawable.pScreen->MoveWindow) (pWin, diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index 851ce4842..d3ec133f6 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -300,8 +300,8 @@ QuartzUpdateScreens(void) quartzProcs->UpdateScreen(pScreen); - /* miPaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */ - miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); + /* PaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */ + pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); /* Tell RandR about the new size, so new connections get the correct info */ RRScreenSizeNotify(pScreen); diff --git a/hw/xwin/winrandr.c b/hw/xwin/winrandr.c index 73925070d..f4ba054bc 100644 --- a/hw/xwin/winrandr.c +++ b/hw/xwin/winrandr.c @@ -104,7 +104,7 @@ winDoRandRScreenSetSize(ScreenPtr pScreen, SetRootClip(pScreen, TRUE); // and arrange for it to be repainted - miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); + pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); /* Indicate that a screen size change took place */ RRScreenSizeNotify(pScreen); diff --git a/include/scrnintstr.h b/include/scrnintstr.h index a627fe7ac..2e617c466 100644 --- a/include/scrnintstr.h +++ b/include/scrnintstr.h @@ -158,6 +158,10 @@ typedef void (*PostValidateTreeProcPtr) (WindowPtr /*pParent */ , typedef void (*WindowExposuresProcPtr) (WindowPtr /*pWindow */ , RegionPtr /*prgn */); +typedef void (*PaintWindowProcPtr) (WindowPtr /*pWindow*/, + RegionPtr /*pRegion*/, + int /*what*/); + typedef void (*CopyWindowProcPtr) (WindowPtr /*pWindow */ , DDXPointRec /*ptOldOrg */ , RegionPtr /*prgnSrc */ ); @@ -498,6 +502,7 @@ typedef struct _Screen { ClearToBackgroundProcPtr ClearToBackground; ClipNotifyProcPtr ClipNotify; RestackWindowProcPtr RestackWindow; + PaintWindowProcPtr PaintWindow; /* Pixmap procedures */ diff --git a/mi/miexpose.c b/mi/miexpose.c index f4c6e89a0..148d1a63b 100644 --- a/mi/miexpose.c +++ b/mi/miexpose.c @@ -268,10 +268,11 @@ miHandleExposures(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, RegionTranslate(&rgnExposed, pDstDrawable->x, pDstDrawable->y); if (extents) { - /* miPaintWindow doesn't clip, so we have to */ + /* PaintWindow doesn't clip, so we have to */ RegionIntersect(&rgnExposed, &rgnExposed, &pWin->clipList); } - miPaintWindow((WindowPtr) pDstDrawable, &rgnExposed, PW_BACKGROUND); + pDstDrawable->pScreen->PaintWindow((WindowPtr) pDstDrawable, + &rgnExposed, PW_BACKGROUND); if (extents) { RegionReset(&rgnExposed, &expBox); @@ -383,16 +384,14 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn) * work overall, on both client and server. This is cheating, but * isn't prohibited by the protocol ("spontaneous combustion" :-). */ - BoxRec box; - - box = *RegionExtents(prgn); + BoxRec box = *RegionExtents(prgn); exposures = &expRec; RegionInit(exposures, &box, 1); RegionReset(prgn, &box); /* miPaintWindow doesn't clip, so we have to */ RegionIntersect(prgn, prgn, &pWin->clipList); } - miPaintWindow(pWin, prgn, PW_BACKGROUND); + pWin->drawable.pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND); if (clientInterested) miSendExposures(pWin, exposures, pWin->drawable.x, pWin->drawable.y); @@ -402,14 +401,6 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn) } } -#ifdef ROOTLESS -/* Ugly, ugly, but we lost our hooks into miPaintWindow... =/ */ -void RootlessSetPixmapOfAncestors(WindowPtr pWin); -void RootlessStartDrawing(WindowPtr pWin); -void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn); -Bool IsFramedWindow(WindowPtr pWin); -#endif - void miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) { @@ -437,19 +428,6 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) Bool solid = TRUE; DrawablePtr drawable = &pWin->drawable; -#ifdef ROOTLESS - if (IsFramedWindow(pWin)) { - RootlessStartDrawing(pWin); - RootlessDamageRegion(pWin, prgn); - - if (pWin->backgroundState == ParentRelative) { - if ((what == PW_BACKGROUND) || - (what == PW_BORDER && !pWin->borderIsPixel)) - RootlessSetPixmapOfAncestors(pWin); - } - } -#endif - if (what == PW_BACKGROUND) { while (pWin->backgroundState == ParentRelative) pWin = pWin->parent; diff --git a/mi/mioverlay.c b/mi/mioverlay.c index 2b20fd72f..9f3ef0725 100644 --- a/mi/mioverlay.c +++ b/mi/mioverlay.c @@ -844,8 +844,8 @@ miOverlayHandleExposures(WindowPtr pWin) if ((mival = pTree->valdata)) { if (!((*pPriv->InOverlay) (pTree->pWin))) { if (RegionNotEmpty(&mival->borderExposed)) { - miPaintWindow(pTree->pWin, &mival->borderExposed, - PW_BORDER); + pScreen->PaintWindow(pTree->pWin, &mival->borderExposed, + PW_BORDER); } RegionUninit(&mival->borderExposed); @@ -883,7 +883,8 @@ miOverlayHandleExposures(WindowPtr pWin) } else { if (RegionNotEmpty(&val->after.borderExposed)) { - miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER); + pScreen->PaintWindow(pChild, &val->after.borderExposed, + PW_BORDER); } (*WindowExposures) (pChild, &val->after.exposed); } @@ -982,6 +983,7 @@ static void miOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn) { RegionPtr exposures = prgn; + ScreenPtr pScreen = pWin->drawable.pScreen; if (prgn && !RegionNil(prgn)) { RegionRec expRec; @@ -1007,7 +1009,7 @@ miOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn) else RegionIntersect(prgn, prgn, &pWin->clipList); } - miPaintWindow(pWin, prgn, PW_BACKGROUND); + pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND); if (clientInterested) miSendExposures(pWin, exposures, pWin->drawable.x, pWin->drawable.y); @@ -1606,7 +1608,7 @@ miOverlayClearToBackground(WindowPtr pWin, if (generateExposures) (*pScreen->WindowExposures) (pWin, ®); else if (pWin->backgroundState != None) - miPaintWindow(pWin, ®, PW_BACKGROUND); + pScreen->PaintWindow(pWin, ®, PW_BACKGROUND); RegionUninit(®); } diff --git a/mi/miscrinit.c b/mi/miscrinit.c index b53c7e41a..9c6af0dc7 100644 --- a/mi/miscrinit.c +++ b/mi/miscrinit.c @@ -253,6 +253,7 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */ pScreen->ClearToBackground = miClearToBackground; pScreen->ClipNotify = (ClipNotifyProcPtr) 0; pScreen->RestackWindow = (RestackWindowProcPtr) 0; + pScreen->PaintWindow = miPaintWindow; /* CreatePixmap, DestroyPixmap */ /* RealizeFont, UnrealizeFont */ /* CreateGC */ diff --git a/mi/miwindow.c b/mi/miwindow.c index 2fc7cfb79..39c279e18 100644 --- a/mi/miwindow.c +++ b/mi/miwindow.c @@ -113,7 +113,7 @@ miClearToBackground(WindowPtr pWin, if (generateExposures) (*pWin->drawable.pScreen->WindowExposures) (pWin, ®); else if (pWin->backgroundState != None) - miPaintWindow(pWin, ®, PW_BACKGROUND); + pWin->drawable.pScreen->PaintWindow(pWin, ®, PW_BACKGROUND); RegionUninit(®); } @@ -219,7 +219,9 @@ miHandleValidateExposures(WindowPtr pWin) while (1) { if ((val = pChild->valdata)) { if (RegionNotEmpty(&val->after.borderExposed)) - miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER); + pWin->drawable.pScreen->PaintWindow(pChild, + &val->after.borderExposed, + PW_BORDER); RegionUninit(&val->after.borderExposed); (*WindowExposures) (pChild, &val->after.exposed); RegionUninit(&val->after.exposed); diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h index fd9c941f4..aa5557954 100644 --- a/miext/rootless/rootlessCommon.h +++ b/miext/rootless/rootlessCommon.h @@ -94,6 +94,7 @@ typedef struct _RootlessScreenRec { ChangeBorderWidthProcPtr ChangeBorderWidth; PositionWindowProcPtr PositionWindow; ChangeWindowAttributesProcPtr ChangeWindowAttributes; + PaintWindowProcPtr PaintWindow; CreateGCProcPtr CreateGC; CopyWindowProcPtr CopyWindow; diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index 6226ee84a..471656428 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -473,7 +473,7 @@ expose_1(WindowPtr pWin) if (!pWin->realized) return; - miPaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND); + pWin->drawable.pScreen->PaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND); /* FIXME: comments in windowstr.h indicate that borderClip doesn't include subwindow visibility. But I'm not so sure.. so we may @@ -669,6 +669,7 @@ RootlessWrap(ScreenPtr pScreen) WRAP(CloseScreen); WRAP(CreateGC); WRAP(CopyWindow); + WRAP(PaintWindow); WRAP(GetImage); WRAP(SourceValidate); WRAP(CreateWindow); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 3240acce5..e3042990c 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -720,7 +720,7 @@ RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, /* * RootlessCopyWindow * Update *new* location of window. Old location is redrawn with - * miPaintWindow. Cloned from fbCopyWindow. + * PaintWindow. Cloned from fbCopyWindow. * The original always draws on the root pixmap, which we don't have. * Instead, draw on the parent window's pixmap. */ @@ -794,6 +794,27 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) RL_DEBUG_MSG("copywindowFB end\n"); } +void +RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + + if (IsFramedWindow(pWin)) { + RootlessStartDrawing(pWin); + RootlessDamageRegion(pWin, prgn); + + if (pWin->backgroundState == ParentRelative) { + if ((what == PW_BACKGROUND) || + (what == PW_BORDER && !pWin->borderIsPixel)) + RootlessSetPixmapOfAncestors(pWin); + } + } + + SCREEN_UNWRAP(pScreen, PaintWindow); + pScreen->PaintWindow(pWin, prgn, what); + SCREEN_WRAP(pScreen, PaintWindow); +} + /* * Window resize procedures */ diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h index d3955fc89..4fd34d54d 100644 --- a/miext/rootless/rootlessWindow.h +++ b/miext/rootless/rootlessWindow.h @@ -48,6 +48,7 @@ Bool RootlessUnrealizeWindow(WindowPtr pWin); void RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib); void RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); +void RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what); void RootlessMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind); void RootlessResizeWindow(WindowPtr pWin, int x, int y, unsigned int w, From 2d7194334a9f84e417ec90e220b2fe476f704612 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 15 May 2015 11:27:31 -0400 Subject: [PATCH 20/23] glx/swrast: Do more GLX extension setup This gets you nice things like core contexts when using Xvfb. Also, no, MESA_copy_sub_buffer is not enabled automatically. Reviewed-by: James Jones Reviewed-by: Jon Turney Signed-off-by: Adam Jackson --- glx/glxdriswrast.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index 5d9aa0437..e25ca4768 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -71,6 +71,8 @@ struct __GLXDRIscreen { const __DRIcopySubBufferExtension *copySubBuffer; const __DRItexBufferExtension *texBuffer; const __DRIconfig **driConfigs; + + unsigned char glx_enable_bits[__GLX_EXT_BYTES]; }; struct __GLXDRIcontext { @@ -394,21 +396,34 @@ initializeExtensions(__GLXDRIscreen * screen) const __DRIextension **extensions; int i; + if (screen->swrast->base.version >= 3) { + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_create_context"); + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_create_context_profile"); + __glXEnableExtension(screen->glx_enable_bits, + "GLX_EXT_create_context_es2_profile"); + } + + /* these are harmless to enable unconditionally */ + __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_framebuffer_sRGB"); + __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_fbconfig_float"); + __glXEnableExtension(screen->glx_enable_bits, "GLX_SGI_make_current_read"); + extensions = screen->core->getExtensions(screen->driScreen); for (i = 0; extensions[i]; i++) { if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) { screen->copySubBuffer = (const __DRIcopySubBufferExtension *) extensions[i]; - /* GLX_MESA_copy_sub_buffer is always enabled. */ + __glXEnableExtension(screen->glx_enable_bits, + "GLX_MESA_copy_sub_buffer"); } if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) { screen->texBuffer = (const __DRItexBufferExtension *) extensions[i]; /* GLX_EXT_texture_from_pixmap is always enabled. */ } - - /* Ignore unknown extensions */ } } @@ -420,6 +435,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) { const char *driverName = "swrast"; __GLXDRIscreen *screen; + size_t buffer_size; screen = calloc(1, sizeof *screen); if (screen == NULL) @@ -431,6 +447,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen) screen->base.swapInterval = NULL; screen->base.pScreen = pScreen; + __glXInitExtensionEnableBits(screen->glx_enable_bits); + screen->driver = glxProbeDriver(driverName, (void **) &screen->core, __DRI_CORE, 1, @@ -459,6 +477,19 @@ __glXDRIscreenProbe(ScreenPtr pScreen) __glXScreenInit(&screen->base, pScreen); + /* The first call simply determines the length of the extension string. + * This allows us to allocate some memory to hold the extension string, + * but it requires that we call __glXGetExtensionString a second time. + */ + buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL); + if (buffer_size > 0) { + free(screen->base.GLXextensions); + + screen->base.GLXextensions = xnfalloc(buffer_size); + (void) __glXGetExtensionString(screen->glx_enable_bits, + screen->base.GLXextensions); + } + screen->base.GLXmajor = 1; screen->base.GLXminor = 4; From 995ff11422eb49160abfe276f471e412b16cab9d Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 19 May 2015 11:31:25 -0400 Subject: [PATCH 21/23] glx: Implement GLX_ARB_context_flush_control This extension allows clients to opt out of the implicit glFlush on context release, which is quite nice for performance for clients using multiple contexts. The server doesn't really need to be aware of the client's decision, at least for direct contexts, but it does need to not reject the context attribute out of hand. This patch won't do anything unless built against a Mesa that defines the __DRI2_FLUSH_CONTROL extension (and a new enough glxext.h, but that's been there since 10.3 at least). Reviewed-by: James Jones Signed-off-by: Adam Jackson --- glx/createcontext.c | 15 +++++++++++++++ glx/extension_string.c | 1 + glx/extension_string.h | 3 ++- glx/glxcmds.c | 20 +++++++++++++++++++- glx/glxcontext.h | 5 +++++ glx/glxdri2.c | 7 +++++++ glx/glxdriswrast.c | 8 ++++++++ 7 files changed, 57 insertions(+), 2 deletions(-) diff --git a/glx/createcontext.c b/glx/createcontext.c index cbeddec26..d06bc1f7f 100644 --- a/glx/createcontext.c +++ b/glx/createcontext.c @@ -87,6 +87,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) int minor_version = 0; uint32_t flags = 0; uint32_t render_type = GLX_RGBA_TYPE; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB + uint32_t flush = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB; +#endif __GLXcontext *ctx = NULL; __GLXcontext *shareCtx = NULL; __GLXscreen *glxScreen; @@ -194,6 +197,15 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) break; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB + case GLX_CONTEXT_RELEASE_BEHAVIOR_ARB: + flush = attribs[2 * i + 1]; + if (flush != GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB + && flush != GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB) + return BadValue; + break; +#endif + default: return BadValue; } @@ -333,6 +345,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) ctx->drawPriv = NULL; ctx->readPriv = NULL; ctx->resetNotificationStrategy = reset; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB + ctx->releaseBehavior = flush; +#endif /* Add the new context to the various global tables of GLX contexts. */ diff --git a/glx/extension_string.c b/glx/extension_string.c index 4bef96f0b..e881d2109 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -72,6 +72,7 @@ struct extension_info { static const struct extension_info known_glx_extensions[] = { /* GLX_ARB_get_proc_address is implemented on the client. */ /* *INDENT-OFF* */ + { GLX(ARB_context_flush_control), VER(0,0), N, }, { GLX(ARB_create_context), VER(0,0), N, }, { GLX(ARB_create_context_profile), VER(0,0), N, }, { GLX(ARB_create_context_robustness), VER(0,0), N, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index e7d393297..bac7b0624 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -36,7 +36,8 @@ enum { /* GLX_ARB_get_proc_address is implemented on the client. */ - ARB_create_context_bit = 0, + ARB_context_flush_control_bit = 0, + ARB_create_context_bit, ARB_create_context_profile_bit, ARB_create_context_robustness_bit, ARB_fbconfig_float_bit, diff --git a/glx/glxcmds.c b/glx/glxcmds.c index f5f2babb8..cbd4ede39 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -334,6 +334,19 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId, */ glxc->resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB + /* The GLX_ARB_context_flush_control spec says: + * + * "The default value [for GLX_CONTEXT_RELEASE_BEHAVIOR] is + * CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some cases be changed + * using platform-specific context creation extensions." + * + * Without using glXCreateContextAttribsARB, there is no way to specify a + * non-default release behavior. + */ + glxc->releaseBehavior = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB; +#endif + /* Add the new context to the various global tables of GLX contexts. */ if (!__glXAddContext(glxc)) { @@ -626,7 +639,12 @@ DoMakeCurrent(__GLXclientState * cl, /* ** Flush the previous context if needed. */ - if (prevglxc->hasUnflushedCommands) { + Bool need_flush = GL_TRUE; +#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB + if (prevglxc->releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB) + need_flush = GL_FALSE; +#endif + if (prevglxc->hasUnflushedCommands && need_flush) { if (__glXForceCurrent(cl, tag, (int *) &error)) { glFlush(); prevglxc->hasUnflushedCommands = GL_FALSE; diff --git a/glx/glxcontext.h b/glx/glxcontext.h index 677898a67..0733281d7 100644 --- a/glx/glxcontext.h +++ b/glx/glxcontext.h @@ -108,6 +108,11 @@ struct __GLXcontext { */ GLenum resetNotificationStrategy; + /** + * Context release behavior + */ + GLenum releaseBehavior; + /* ** Buffers for feedback and selection. */ diff --git a/glx/glxdri2.c b/glx/glxdri2.c index bcd57a4a3..6fb3d9278 100644 --- a/glx/glxdri2.c +++ b/glx/glxdri2.c @@ -921,6 +921,13 @@ initializeExtensions(__GLXDRIscreen * screen) "AIGLX: enabled GLX_ARB_create_context_robustness\n"); } +#ifdef __DRI2_FLUSH_CONTROL + if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) { + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_context_flush_control\n"); + } +#endif + /* Ignore unknown extensions */ } } diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index e25ca4768..9add2a13f 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -424,6 +424,14 @@ initializeExtensions(__GLXDRIscreen * screen) screen->texBuffer = (const __DRItexBufferExtension *) extensions[i]; /* GLX_EXT_texture_from_pixmap is always enabled. */ } + +#ifdef __DRI2_FLUSH_CONTROL + if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) { + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_context_flush_control\n"); + } +#endif + } } From 2d2cf9e322a5ec3ead175edc136cdaeea00ec1b1 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 19 Dec 2014 12:57:41 -0500 Subject: [PATCH 22/23] atom: Bump initial table size We're always creating ~230 atoms at startup, might as well tune it so we don't hit the realloc path before Dispatch. Reviewed-by: Chris Wilson Signed-off-by: Adam Jackson --- dix/atom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/atom.c b/dix/atom.c index 7de7fb05e..a1e555e31 100644 --- a/dix/atom.c +++ b/dix/atom.c @@ -56,7 +56,7 @@ SOFTWARE. #include "resource.h" #include "dix.h" -#define InitialTableSize 100 +#define InitialTableSize 256 typedef struct _Node { struct _Node *left, *right; From 7b0f940625a0f6eee2ef91dfbfa4a206246940f5 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 19 Dec 2014 13:46:37 -0500 Subject: [PATCH 23/23] atom: make FreeAtom static Reviewed-by: Chris Wilson Signed-off-by: Adam Jackson --- dix/atom.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dix/atom.c b/dix/atom.c index a1e555e31..da0adfe78 100644 --- a/dix/atom.c +++ b/dix/atom.c @@ -70,8 +70,6 @@ static NodePtr atomRoot = NULL; static unsigned long tableLength; static NodePtr *nodeTable; -void FreeAtom(NodePtr patom); - Atom MakeAtom(const char *string, unsigned len, Bool makeit) { @@ -166,7 +164,7 @@ AtomError(void) FatalError("initializing atoms"); } -void +static void FreeAtom(NodePtr patom) { if (patom->left)