diff options
author | Jay Sorg <jay.sorg@gmail.com> | 2014-11-13 22:08:14 -0800 |
---|---|---|
committer | Jay Sorg <jay.sorg@gmail.com> | 2014-11-13 22:08:14 -0800 |
commit | 32f172853f9763f4b046c9e5465813a0aa5e3f1c (patch) | |
tree | 8f20d0d783696e680ac37725afb0e0a62f677f47 /xorg/server/module | |
parent | ddfd6b8b59ae411f15622ba4e50ef895b1e23e23 (diff) | |
parent | 942cdf300edaed7fee13a78e5e1c9b9c3d9c923e (diff) | |
download | xrdp-proprietary-32f172853f9763f4b046c9e5465813a0aa5e3f1c.tar.gz xrdp-proprietary-32f172853f9763f4b046c9e5465813a0aa5e3f1c.zip |
Merge branch 'devel'
Diffstat (limited to 'xorg/server/module')
76 files changed, 650 insertions, 287 deletions
diff --git a/xorg/server/module/Makefile b/xorg/server/module/Makefile deleted file mode 100644 index 8f1560d6..00000000 --- a/xorg/server/module/Makefile +++ /dev/null @@ -1,60 +0,0 @@ - -OBJS = rdpDraw.o rdpPri.o rdpGC.o rdpFillSpans.o rdpSetSpans.o rdpPutImage.o \ -rdpCopyArea.o rdpCopyPlane.o rdpPolyPoint.o rdpPolylines.o rdpPolySegment.o \ -rdpPolyRectangle.o rdpPolyArc.o rdpFillPolygon.o rdpPolyFillRect.o \ -rdpPolyFillArc.o rdpPolyText8.o rdpPolyText16.o rdpImageText8.o \ -rdpImageText16.o rdpImageGlyphBlt.o rdpPolyGlyphBlt.o rdpPushPixels.o \ -rdpCursor.o rdpMain.o rdpRandR.o rdpMisc.o rdpReg.o \ -rdpComposite.o rdpGlyphs.o rdpPixmap.o rdpInput.o rdpClientCon.o rdpCapture.o \ -rdpTrapezoids.o rdpXv.o rdpSimd.o - -;OBJS += cpuid_x86.o i420_to_rgb32_x86_sse2.o yv12_to_rgb32_x86_sse2.o yuy2_to_rgb32_x86_sse2.o uyvy_to_rgb32_x86_sse2.o -;OBJS += cpuid_amd64.o i420_to_rgb32_amd64_sse2.o yv12_to_rgb32_amd64_sse2.o yuy2_to_rgb32_amd64_sse2.o uyvy_to_rgb32_amd64_sse2.o - -CFLAGS = -g -O2 -Wall -fPIC -I/usr/include/xorg -I/usr/include/pixman-1 \ --I../../../common - -;CFLAGS += -DSIMD_USE_ACCEL=1 - -LDFLAGS = - -LIBS = - -all: libxorgxrdp.so - -libxorgxrdp.so: $(OBJS) Makefile - $(CC) -shared -o libxorgxrdp.so $(LDFLAGS) $(OBJS) $(LIBS) - -clean: - rm -f $(OBJS) libxorgxrdp.so - -cpuid_x86.o: x86/cpuid_x86.asm - yasm -f elf32 -g dwarf2 x86/cpuid_x86.asm - -i420_to_rgb32_x86_sse2.o: x86/i420_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/i420_to_rgb32_x86_sse2.asm - -yv12_to_rgb32_x86_sse2.o: x86/yv12_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/yv12_to_rgb32_x86_sse2.asm - -yuy2_to_rgb32_x86_sse2.o: x86/yuy2_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/yuy2_to_rgb32_x86_sse2.asm - -uyvy_to_rgb32_x86_sse2.o: x86/uyvy_to_rgb32_x86_sse2.asm - yasm -f elf32 -g dwarf2 x86/uyvy_to_rgb32_x86_sse2.asm - -cpuid_amd64.o: amd64/cpuid_amd64.asm - yasm -f elf64 -g dwarf2 amd64/cpuid_amd64.asm - -i420_to_rgb32_amd64_sse2.o: amd64/i420_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/i420_to_rgb32_amd64_sse2.asm - -yv12_to_rgb32_amd64_sse2.o: amd64/yv12_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/yv12_to_rgb32_amd64_sse2.asm - -yuy2_to_rgb32_amd64_sse2.o: amd64/yuy2_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/yuy2_to_rgb32_amd64_sse2.asm - -uyvy_to_rgb32_amd64_sse2.o: amd64/uyvy_to_rgb32_amd64_sse2.asm - yasm -f elf64 -g dwarf2 amd64/uyvy_to_rgb32_amd64_sse2.asm - diff --git a/xorg/server/module/Makefile.am b/xorg/server/module/Makefile.am new file mode 100644 index 00000000..07b24edc --- /dev/null +++ b/xorg/server/module/Makefile.am @@ -0,0 +1,22 @@ +EXTRA_DIST = + +AM_CFLAGS = \ + $(XORG_SERVER_CFLAGS) \ + -I../../../common + +libxorgxrdp_la_LTLIBRARIES = libxorgxrdp.la + +libxorgxrdp_la_LDFLAGS = -module -avoid-version + +libxorgxrdp_ladir = $(moduledir) + +libxorgxrdp_la_SOURCES = rdpDraw.c rdpPri.c rdpGC.c rdpFillSpans.c \ +rdpSetSpans.c rdpPutImage.c rdpCopyArea.c rdpCopyPlane.c rdpPolyPoint.c \ +rdpPolylines.c rdpPolySegment.c rdpPolyRectangle.c rdpPolyArc.c \ +rdpFillPolygon.c rdpPolyFillRect.c rdpPolyFillArc.c rdpPolyText8.c \ +rdpPolyText16.c rdpImageText8.c rdpImageText16.c rdpImageGlyphBlt.c \ +rdpPolyGlyphBlt.c rdpPushPixels.c rdpCursor.c rdpMain.c rdpRandR.c \ +rdpMisc.c rdpReg.c rdpComposite.c rdpGlyphs.c rdpPixmap.c rdpInput.c \ +rdpClientCon.c rdpCapture.c rdpTrapezoids.c rdpXv.c rdpSimd.c + +libxorgxrdp_la_LIBADD = diff --git a/xorg/server/module/rdp.h b/xorg/server/module/rdp.h index 8a4d58c4..711750a2 100644 --- a/xorg/server/module/rdp.h +++ b/xorg/server/module/rdp.h @@ -23,6 +23,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define _RDP_H #include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + #include <scrnintstr.h> #include <gcstruct.h> #include <mipointer.h> @@ -197,6 +200,10 @@ struct _rdpCounts typedef int (*yuv_to_rgb32_proc)(unsigned char *yuvs, int width, int height, int *rgbs); +typedef int (*copy_box_proc)(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); + /* move this to common header */ struct _rdpRec { @@ -209,6 +216,7 @@ struct _rdpRec int bitsPerPixel; int Bpp; int Bpp_mask; + char *pfbMemory_alloc; char *pfbMemory; ScreenPtr pScreen; rdpDevPrivateKey privateKeyRecGC; @@ -277,6 +285,8 @@ struct _rdpRec int xv_timer_schedualed; OsTimerPtr xv_timer; + copy_box_proc a8r8g8b8_to_a8b8g8r8_box; + }; typedef struct _rdpRec rdpRec; typedef struct _rdpRec * rdpPtr; diff --git a/xorg/server/module/rdpCapture.c b/xorg/server/module/rdpCapture.c index 5163e6ae..72b95535 100644 --- a/xorg/server/module/rdpCapture.c +++ b/xorg/server/module/rdpCapture.c @@ -24,6 +24,7 @@ /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ #include "rdpClientCon.h" #include "rdpReg.h" #include "rdpMisc.h" +#include "rdpCapture.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ @@ -63,7 +65,8 @@ rdpLimitRects(RegionPtr reg, int max_rects, BoxPtr *rects) /******************************************************************************/ /* copy rects with no error checking */ static int -rdpCopyBox_a8r8g8b8_to_a8r8g8b8(void *src, int src_stride, int srcx, int srcy, +rdpCopyBox_a8r8g8b8_to_a8r8g8b8(rdpClientCon *clientCon, + void *src, int src_stride, int srcx, int srcy, void *dst, int dst_stride, int dstx, int dsty, BoxPtr rects, int num_rects) { @@ -87,7 +90,7 @@ rdpCopyBox_a8r8g8b8_to_a8r8g8b8(void *src, int src_stride, int srcx, int srcy, height = box->y2 - box->y1; for (jndex = 0; jndex < height; jndex++) { - memcpy(d8, s8, bytes); + g_memcpy(d8, s8, bytes); d8 += dst_stride; s8 += src_stride; } @@ -101,7 +104,7 @@ rdpFillBox_yuvalp(int ax, int ay, void *dst, int dst_stride) { dst = ((char *) dst) + (ay << 8) * (dst_stride >> 8) + (ax << 8); - memset(dst, 0, 64 * 64 * 4); + g_memset(dst, 0, 64 * 64 * 4); return 0; } @@ -174,13 +177,14 @@ rdpCopyBox_a8r8g8b8_to_yuvalp(int ax, int ay, y = (r * 19595 + g * 38470 + b * 7471) >> 16; u = (r * -11071 + g * -21736 + b * 32807) >> 16; v = (r * 32756 + g * -27429 + b * -5327) >> 16; - y = y - 128; - y = max(y, -128); - u = max(u, -128); - v = max(v, -128); - y = min(y, 127); - u = min(u, 127); - v = min(v, 127); + u = u + 128; + v = v + 128; + y = max(y, 0); + u = max(u, 0); + v = max(v, 0); + y = min(y, 255); + u = min(u, 255); + v = min(v, 255); *(yptr++) = y; *(uptr++) = u; *(vptr++) = v; @@ -195,52 +199,66 @@ rdpCopyBox_a8r8g8b8_to_yuvalp(int ax, int ay, } /******************************************************************************/ +int +a8r8g8b8_to_a8b8g8r8_box(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height) +{ + int index; + int jndex; + int red; + int green; + int blue; + unsigned int *s32; + unsigned int *d32; + + for (index = 0; index < height; index++) + { + s32 = (unsigned int *) s8; + d32 = (unsigned int *) d8; + for (jndex = 0; jndex < width; jndex++) + { + SPLITCOLOR32(red, green, blue, *s32); + *d32 = COLOR24(red, green, blue); + s32++; + d32++; + } + d8 += dst_stride; + s8 += src_stride; + } + return 0; +} + +/******************************************************************************/ /* copy rects with no error checking */ static int -rdpCopyBox_a8r8g8b8_to_a8b8g8r8(void *src, int src_stride, - void *dst, int dst_stride, +rdpCopyBox_a8r8g8b8_to_a8b8g8r8(rdpClientCon *clientCon, + void *src, int src_stride, int srcx, int srcy, + void *dst, int dst_stride, int dstx, int dsty, BoxPtr rects, int num_rects) { char *s8; char *d8; int index; - int jndex; - int kndex; int bytes; int width; int height; - int red; - int green; - int blue; BoxPtr box; - unsigned int *s32; - unsigned int *d32; + copy_box_proc copy_box; + copy_box = clientCon->dev->a8r8g8b8_to_a8b8g8r8_box; for (index = 0; index < num_rects; index++) { box = rects + index; - s8 = ((char *) src) + box->y1 * src_stride; - s8 += box->x1 * 4; - d8 = ((char *) dst) + box->y1 * dst_stride; - d8 += box->x1 * 4; + s8 = ((char *) src) + (box->y1 - srcy) * src_stride; + s8 += (box->x1 - srcx) * 4; + d8 = ((char *) dst) + (box->y1 - dsty) * dst_stride; + d8 += (box->x1 - dstx) * 4; bytes = box->x2 - box->x1; bytes *= 4; width = box->x2 - box->x1; height = box->y2 - box->y1; - for (jndex = 0; jndex < height; jndex++) - { - s32 = (unsigned int *) s8; - d32 = (unsigned int *) d8; - for (kndex = 0; kndex < width; kndex++) - { - SPLITCOLOR32(red, green, blue, *s32); - *d32 = COLOR24(red, green, blue); - s32++; - d32++; - } - d8 += dst_stride; - s8 += src_stride; - } + copy_box(s8, src_stride, d8, dst_stride, width, height); } return 0; } @@ -283,8 +301,8 @@ rdpCapture0(rdpClientCon *clientCon, rect.x1 = 0; rect.y1 = 0; - rect.x2 = min(dst_width, src_width); - rect.y2 = min(dst_height, src_height); + rect.x2 = RDPMIN(dst_width, src_width); + rect.y2 = RDPMIN(dst_height, src_height); rdpRegionInit(®, &rect, 0); rdpRegionIntersect(®, in_reg, ®); @@ -307,14 +325,16 @@ rdpCapture0(rdpClientCon *clientCon, if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_a8r8g8b8)) { - rdpCopyBox_a8r8g8b8_to_a8r8g8b8(src, src_stride, 0, 0, + rdpCopyBox_a8r8g8b8_to_a8r8g8b8(clientCon, + src, src_stride, 0, 0, dst, dst_stride, 0, 0, psrc_rects, num_rects); } else if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_a8b8g8r8)) { - rdpCopyBox_a8r8g8b8_to_a8b8g8r8(src, src_stride, - dst, dst_stride, + rdpCopyBox_a8r8g8b8_to_a8b8g8r8(clientCon, + src, src_stride, 0, 0, + dst, dst_stride, 0, 0, psrc_rects, num_rects); } else if ((src_format == XRDP_a8r8g8b8) && (dst_format == XRDP_r5g6b5)) @@ -739,6 +759,7 @@ rdpCapture(rdpClientCon *clientCon, int dst_stride, int dst_format, int mode) { LLOGLN(10, ("rdpCapture:")); + LLOGLN(10, ("rdpCapture: src %p dst %p", src, dst)); switch (mode) { case 0: diff --git a/xorg/server/module/rdpCapture.h b/xorg/server/module/rdpCapture.h index 4dff1eea..c138947a 100644 --- a/xorg/server/module/rdpCapture.h +++ b/xorg/server/module/rdpCapture.h @@ -18,10 +18,24 @@ * Routines to copy regions from framebuffer to shared memory */ -Bool +#ifndef __RDPCAPTURE_H +#define __RDPCAPTURE_H + +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT Bool rdpCapture(rdpClientCon *clientCon, RegionPtr in_reg, BoxPtr *out_rects, int *num_out_rects, void *src, int src_width, int src_height, int src_stride, int src_format, void *dst, int dst_width, int dst_height, int dst_stride, int dst_format, int mode); + +extern _X_EXPORT int +a8r8g8b8_to_a8b8g8r8_box(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); + +#endif diff --git a/xorg/server/module/rdpClientCon.c b/xorg/server/module/rdpClientCon.c index 35369063..21df291f 100644 --- a/xorg/server/module/rdpClientCon.c +++ b/xorg/server/module/rdpClientCon.c @@ -31,6 +31,7 @@ Client connection to xrdp /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> diff --git a/xorg/server/module/rdpClientCon.h b/xorg/server/module/rdpClientCon.h index a66abbcd..954e3ab0 100644 --- a/xorg/server/module/rdpClientCon.h +++ b/xorg/server/module/rdpClientCon.h @@ -21,6 +21,10 @@ Client connection to xrdp */ +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + /* in xrdp/common */ #include "xrdp_client_info.h" #include "xrdp_constants.h" @@ -108,55 +112,55 @@ struct _rdpClientCon struct _rdpClientCon *next; }; -int +extern _X_EXPORT int rdpClientConBeginUpdate(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConEndUpdate(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConSetFgcolor(rdpPtr dev, rdpClientCon *clientCon, int fgcolor); -void +extern _X_EXPORT void rdpClientConSendArea(rdpPtr dev, rdpClientCon *clientCon, struct image_data *id, int x, int y, int w, int h); -int +extern _X_EXPORT int rdpClientConFillRect(rdpPtr dev, rdpClientCon *clientCon, short x, short y, int cx, int cy); -int +extern _X_EXPORT int rdpClientConCheck(ScreenPtr pScreen); -int +extern _X_EXPORT int rdpClientConInit(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConDeinit(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConDeleteOsSurface(rdpPtr dev, rdpClientCon *clientCon, int rdpindex); -int +extern _X_EXPORT int rdpClientConRemoveOsBitmap(rdpPtr dev, rdpClientCon *clientCon, int rdpindex); -void +extern _X_EXPORT void rdpClientConScheduleDeferredUpdate(rdpPtr dev); -int +extern _X_EXPORT int rdpClientConCheckDirtyScreen(rdpPtr dev, rdpClientCon *clientCon); -int +extern _X_EXPORT int rdpClientConAddDirtyScreenReg(rdpPtr dev, rdpClientCon *clientCon, RegionPtr reg); -int +extern _X_EXPORT int rdpClientConAddDirtyScreenBox(rdpPtr dev, rdpClientCon *clientCon, BoxPtr box); -int +extern _X_EXPORT int rdpClientConAddDirtyScreen(rdpPtr dev, rdpClientCon *clientCon, int x, int y, int cx, int cy); -void +extern _X_EXPORT void rdpClientConGetScreenImageRect(rdpPtr dev, rdpClientCon *clientCon, struct image_data *id); -int +extern _X_EXPORT int rdpClientConAddAllReg(rdpPtr dev, RegionPtr reg, DrawablePtr pDrawable); -int +extern _X_EXPORT int rdpClientConAddAllBox(rdpPtr dev, BoxPtr box, DrawablePtr pDrawable); -int +extern _X_EXPORT int rdpClientConSetCursor(rdpPtr dev, rdpClientCon *clientCon, short x, short y, char *cur_data, char *cur_mask); -int +extern _X_EXPORT int rdpClientConSetCursorEx(rdpPtr dev, rdpClientCon *clientCon, short x, short y, char *cur_data, char *cur_mask, int bpp); diff --git a/xorg/server/module/rdpComposite.c b/xorg/server/module/rdpComposite.c index 7535d6c3..8c65ff1b 100644 --- a/xorg/server/module/rdpComposite.c +++ b/xorg/server/module/rdpComposite.c @@ -27,6 +27,7 @@ composite(alpha blending) calls /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> diff --git a/xorg/server/module/rdpComposite.h b/xorg/server/module/rdpComposite.h index 017cb41d..1c052ed8 100644 --- a/xorg/server/module/rdpComposite.h +++ b/xorg/server/module/rdpComposite.h @@ -24,7 +24,11 @@ composite(alpha blending) calls #ifndef _RDPCOMPOSITE_H #define _RDPCOMPOSITE_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height); diff --git a/xorg/server/module/rdpCopyArea.c b/xorg/server/module/rdpCopyArea.c index 708891f6..f135af6e 100644 --- a/xorg/server/module/rdpCopyArea.c +++ b/xorg/server/module/rdpCopyArea.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpCopyArea.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpCopyArea.h b/xorg/server/module/rdpCopyArea.h index 654b6edc..881a8714 100644 --- a/xorg/server/module/rdpCopyArea.h +++ b/xorg/server/module/rdpCopyArea.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPCOPYAREA_H #define __RDPCOPYAREA_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + RegionPtr rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int w, int h, int dstx, int dsty); diff --git a/xorg/server/module/rdpCopyPlane.c b/xorg/server/module/rdpCopyPlane.c index 9ccf4c0a..3ce3d558 100644 --- a/xorg/server/module/rdpCopyPlane.c +++ b/xorg/server/module/rdpCopyPlane.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpCopyPlane.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpCopyPlane.h b/xorg/server/module/rdpCopyPlane.h index 6abd0293..66b372c9 100644 --- a/xorg/server/module/rdpCopyPlane.h +++ b/xorg/server/module/rdpCopyPlane.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPCOPYPLANE_H #define __RDPCOPYPLANE_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + RegionPtr rdpCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, int srcx, int srcy, int width, int height, diff --git a/xorg/server/module/rdpCursor.c b/xorg/server/module/rdpCursor.c index d4862df7..f85999de 100644 --- a/xorg/server/module/rdpCursor.c +++ b/xorg/server/module/rdpCursor.c @@ -27,6 +27,7 @@ cursor /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -45,6 +46,7 @@ cursor #include "rdpMain.h" #include "rdpDraw.h" #include "rdpClientCon.h" +#include "rdpCursor.h" #ifndef X_BYTE_ORDER #warning X_BYTE_ORDER not defined diff --git a/xorg/server/module/rdpCursor.h b/xorg/server/module/rdpCursor.h index 10a57d70..1be09f61 100644 --- a/xorg/server/module/rdpCursor.h +++ b/xorg/server/module/rdpCursor.h @@ -25,20 +25,21 @@ misc draw calls #define __RDPCURSOR_H #include <xorg-server.h> +#include <xorgVersion.h> #include <xf86.h> -Bool +extern _X_EXPORT Bool rdpSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs); -Bool +extern _X_EXPORT Bool rdpSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs); -void +extern _X_EXPORT void rdpSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScr, CursorPtr pCurs, int x, int y); -void +extern _X_EXPORT void rdpSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScr, int x, int y); -Bool +extern _X_EXPORT Bool rdpSpriteDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScr); -void +extern _X_EXPORT void rdpSpriteDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScr); #endif diff --git a/xorg/server/module/rdpDraw.h b/xorg/server/module/rdpDraw.h index af65b46c..583ac7d1 100644 --- a/xorg/server/module/rdpDraw.h +++ b/xorg/server/module/rdpDraw.h @@ -65,29 +65,29 @@ do { \ extern GCOps g_rdpGCOps; /* in rdpGC.c */ -int +extern _X_EXPORT int rdpDrawGetClip(rdpPtr dev, RegionPtr pRegion, DrawablePtr pDrawable, GCPtr pGC); -void +extern _X_EXPORT void GetTextBoundingBox(DrawablePtr pDrawable, FontPtr font, int x, int y, int n, BoxPtr pbox); -int +extern _X_EXPORT int rdpDrawItemAdd(rdpPtr dev, rdpPixmapRec *priv, struct rdp_draw_item *di); -int +extern _X_EXPORT int rdpDrawItemRemove(rdpPtr dev, rdpPixmapRec *priv, struct rdp_draw_item *di); -int +extern _X_EXPORT int rdpDrawItemRemoveAll(rdpPtr dev, rdpPixmapRec *priv); -void +extern _X_EXPORT void rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion); #if XRDP_CLOSESCR == 1 -Bool +extern _X_EXPORT Bool rdpCloseScreen(int index, ScreenPtr pScreen); #else -Bool +extern _X_EXPORT Bool rdpCloseScreen(ScreenPtr pScreen); #endif -WindowPtr +extern _X_EXPORT WindowPtr rdpGetRootWindowPtr(ScreenPtr pScreen); -rdpPtr +extern _X_EXPORT rdpPtr rdpGetDevFromScreen(ScreenPtr pScreen); #endif diff --git a/xorg/server/module/rdpFillPolygon.c b/xorg/server/module/rdpFillPolygon.c index 34fe4096..fdcc3472 100644 --- a/xorg/server/module/rdpFillPolygon.c +++ b/xorg/server/module/rdpFillPolygon.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpFillPolygon.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpFillPolygon.h b/xorg/server/module/rdpFillPolygon.h index cdbfb13a..6c929dd9 100644 --- a/xorg/server/module/rdpFillPolygon.h +++ b/xorg/server/module/rdpFillPolygon.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPFILLPOLYGON_H #define __RDPFILLPOLYGON_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, int count, DDXPointPtr pPts); diff --git a/xorg/server/module/rdpFillSpans.c b/xorg/server/module/rdpFillSpans.c index 8e98940a..0afb664d 100644 --- a/xorg/server/module/rdpFillSpans.c +++ b/xorg/server/module/rdpFillSpans.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -32,6 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpFillSpans.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpFillSpans.h b/xorg/server/module/rdpFillSpans.h index 5c1db533..ed1f6331 100644 --- a/xorg/server/module/rdpFillSpans.h +++ b/xorg/server/module/rdpFillSpans.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPFILLSPANS_H #define __RDPFILLSPANS_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + void rdpFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nInit, DDXPointPtr pptInit, int* pwidthInit, int fSorted); diff --git a/xorg/server/module/rdpGC.c b/xorg/server/module/rdpGC.c index f2668f3d..db5983e2 100644 --- a/xorg/server/module/rdpGC.c +++ b/xorg/server/module/rdpGC.c @@ -27,6 +27,7 @@ GC related calls /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -59,6 +60,7 @@ GC related calls #include "rdpPolyGlyphBlt.h" #include "rdpPushPixels.h" #include "rdpDraw.h" +#include "rdpGC.h" /******************************************************************************/ #define LOG_LEVEL 1 diff --git a/xorg/server/module/rdpGC.h b/xorg/server/module/rdpGC.h index fcdd201d..11b0ef8b 100644 --- a/xorg/server/module/rdpGC.h +++ b/xorg/server/module/rdpGC.h @@ -24,7 +24,11 @@ GC related calls #ifndef _RDPGC_H #define _RDPGC_H -Bool +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT Bool rdpCreateGC(GCPtr pGC); #endif diff --git a/xorg/server/module/rdpGlyphs.c b/xorg/server/module/rdpGlyphs.c index e6fcbb30..1f97c3f1 100644 --- a/xorg/server/module/rdpGlyphs.c +++ b/xorg/server/module/rdpGlyphs.c @@ -27,6 +27,7 @@ gylph(font) calls /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> diff --git a/xorg/server/module/rdpGlyphs.h b/xorg/server/module/rdpGlyphs.h index 0128fe7c..cbb2ca8b 100644 --- a/xorg/server/module/rdpGlyphs.h +++ b/xorg/server/module/rdpGlyphs.h @@ -24,6 +24,10 @@ gylph(font) calls #ifndef _RDPGLYPHS_H #define _RDPGLYPHS_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + struct rdp_font_char { int offset; /* x */ @@ -51,9 +55,9 @@ struct rdp_text struct rdp_text* next; }; -int +extern _X_EXPORT int rdpGlyphDeleteRdpText(struct rdp_text* rtext); -void +extern _X_EXPORT void rdpGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists, diff --git a/xorg/server/module/rdpImageGlyphBlt.c b/xorg/server/module/rdpImageGlyphBlt.c index 74693fd9..0d1a7d6e 100644 --- a/xorg/server/module/rdpImageGlyphBlt.c +++ b/xorg/server/module/rdpImageGlyphBlt.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageGlyphBlt.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageGlyphBlt.h b/xorg/server/module/rdpImageGlyphBlt.h index b71e5730..6857ee1b 100644 --- a/xorg/server/module/rdpImageGlyphBlt.h +++ b/xorg/server/module/rdpImageGlyphBlt.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGEGLYPHBLT_H #define __RDPIMAGEGLYPHBLT_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr* ppci, pointer pglyphBase); diff --git a/xorg/server/module/rdpImageText16.c b/xorg/server/module/rdpImageText16.c index 7ad8012b..d1038912 100644 --- a/xorg/server/module/rdpImageText16.c +++ b/xorg/server/module/rdpImageText16.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageText16.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageText16.h b/xorg/server/module/rdpImageText16.h index b7d0a861..e2f2b03e 100644 --- a/xorg/server/module/rdpImageText16.h +++ b/xorg/server/module/rdpImageText16.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGETEXT16_H #define __RDPIMAGETEXT16_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short* chars); diff --git a/xorg/server/module/rdpImageText8.c b/xorg/server/module/rdpImageText8.c index abcfbff0..068f6d6d 100644 --- a/xorg/server/module/rdpImageText8.c +++ b/xorg/server/module/rdpImageText8.c @@ -25,7 +25,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> - +#include <xorgVersion.h> + /* all driver need this */ #include <xf86.h> #include <xf86_OSproc.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpImageText8.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpImageText8.h b/xorg/server/module/rdpImageText8.h index cf7dd1bb..fbc67a10 100644 --- a/xorg/server/module/rdpImageText8.h +++ b/xorg/server/module/rdpImageText8.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPIMAGETEXT8_H #define __RDPIMAGETEXT8_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char* chars); diff --git a/xorg/server/module/rdpInput.c b/xorg/server/module/rdpInput.c index f19b2947..baf1ff3c 100644 --- a/xorg/server/module/rdpInput.c +++ b/xorg/server/module/rdpInput.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -53,6 +54,7 @@ static struct input_proc_list g_input_proc[MAX_INPUT_PROC]; int rdpRegisterInputCallback(int type, rdpInputEventProcPtr proc) { + LLOGLN(0, ("rdpRegisterInputCallback: type %d proc %p", type, proc)); if (type == 0) { g_input_proc[0].proc = proc; @@ -73,12 +75,22 @@ int rdpUnregisterInputCallback(rdpInputEventProcPtr proc) { int index; + char text[256]; + LLOGLN(0, ("rdpUnregisterInputCallback: proc %p", proc)); for (index = 0; index < MAX_INPUT_PROC; index++) { if (g_input_proc[index].proc == proc) { - g_input_proc[index].proc = 0; + if (index == 0) + { + /* hack to cleanup + remove when xrdpdevTearDown is working */ + g_sprintf(text, "/tmp/.xrdp/xrdp_display_%s", display); + LLOGLN(0, ("rdpUnregisterInputCallback: deleting file %s", text)); + unlink(text); + } + g_input_proc[index].proc = 0; return 0; } } diff --git a/xorg/server/module/rdpInput.h b/xorg/server/module/rdpInput.h index c0991ace..98a0c239 100644 --- a/xorg/server/module/rdpInput.h +++ b/xorg/server/module/rdpInput.h @@ -24,23 +24,27 @@ input #ifndef _RDPINPUT_H #define _RDPINPUT_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + typedef int (*rdpInputEventProcPtr)(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpRegisterInputCallback(int type, rdpInputEventProcPtr proc); -int +extern _X_EXPORT int rdpUnregisterInputCallback(rdpInputEventProcPtr proc); -int +extern _X_EXPORT int rdpInputKeyboardEvent(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpInputMouseEvent(rdpPtr dev, int msg, long param1, long param2, long param3, long param4); -int +extern _X_EXPORT int rdpInputInit(void); #endif diff --git a/xorg/server/module/rdpMain.c b/xorg/server/module/rdpMain.c index 2f6db7c7..835be9db 100644 --- a/xorg/server/module/rdpMain.c +++ b/xorg/server/module/rdpMain.c @@ -27,6 +27,7 @@ rdp module main /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -41,6 +42,7 @@ rdp module main #include "rdpInput.h" #include "rdpDraw.h" #include "rdpClientCon.h" +#include "rdpMain.h" /******************************************************************************/ #define LOG_LEVEL 1 diff --git a/xorg/server/module/rdpMain.h b/xorg/server/module/rdpMain.h index 2d2cfbe1..33fc0e04 100644 --- a/xorg/server/module/rdpMain.h +++ b/xorg/server/module/rdpMain.h @@ -24,7 +24,11 @@ rdp module main #ifndef __RDPMAIN_H #define __RDPMAIN_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void xorgxrdpDownDown(ScreenPtr pScreen); #endif diff --git a/xorg/server/module/rdpMisc.c b/xorg/server/module/rdpMisc.c index 653342fe..c7a61fc8 100644 --- a/xorg/server/module/rdpMisc.c +++ b/xorg/server/module/rdpMisc.c @@ -36,11 +36,14 @@ the rest /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> #include <xf86_OSproc.h> +#include "rdpMisc.h" + /******************************************************************************/ int rdpBitsPerPixel(int depth) diff --git a/xorg/server/module/rdpMisc.h b/xorg/server/module/rdpMisc.h index 58f6bd31..07c6ec0d 100644 --- a/xorg/server/module/rdpMisc.h +++ b/xorg/server/module/rdpMisc.h @@ -24,59 +24,63 @@ the rest #ifndef __RDPMISC_H #define __RDPMISC_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + #include <X11/Xos.h> -int +extern _X_EXPORT int rdpBitsPerPixel(int depth); -int +extern _X_EXPORT int g_sck_can_recv(int sck, int millis); -int +extern _X_EXPORT int g_sck_recv(int sck, void *ptr, int len, int flags); -void +extern _X_EXPORT void g_sck_close(int sck); -int +extern _X_EXPORT int g_sck_last_error_would_block(int sck); -void +extern _X_EXPORT void g_sleep(int msecs); -int +extern _X_EXPORT int g_sck_send(int sck, void *ptr, int len, int flags); -void * +extern _X_EXPORT void * g_malloc(int size, int zero); -void +extern _X_EXPORT void g_free(void *ptr); -void +extern _X_EXPORT void g_sprintf(char *dest, char *format, ...); -int +extern _X_EXPORT int g_sck_tcp_socket(void); -int +extern _X_EXPORT int g_sck_local_socket_dgram(void); -int +extern _X_EXPORT int g_sck_local_socket_stream(void); -void +extern _X_EXPORT void g_memcpy(void *d_ptr, const void *s_ptr, int size); -void +extern _X_EXPORT void g_memset(void *d_ptr, const unsigned char chr, int size); -int +extern _X_EXPORT int g_sck_tcp_set_no_delay(int sck); -int +extern _X_EXPORT int g_sck_set_non_blocking(int sck); -int +extern _X_EXPORT int g_sck_accept(int sck); -int +extern _X_EXPORT int g_sck_select(int sck1, int sck2, int sck3); -int +extern _X_EXPORT int g_sck_tcp_bind(int sck, char *port); -int +extern _X_EXPORT int g_sck_local_bind(int sck, char *port); -int +extern _X_EXPORT int g_sck_listen(int sck); -int +extern _X_EXPORT int g_create_dir(const char *dirname); -int +extern _X_EXPORT int g_directory_exist(const char *dirname); -int +extern _X_EXPORT int g_chmod_hex(const char *filename, int flags); -void +extern _X_EXPORT void g_hexdump(void *p, long len); #if defined(X_BYTE_ORDER) diff --git a/xorg/server/module/rdpPixmap.h b/xorg/server/module/rdpPixmap.h index 7fce3186..e1c7c7ac 100644 --- a/xorg/server/module/rdpPixmap.h +++ b/xorg/server/module/rdpPixmap.h @@ -26,6 +26,7 @@ pixmap calls #include <xorg-server.h> #include <xorgVersion.h> +#include <xf86.h> #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 5, 0, 0, 0) /* 1.1, 1.2, 1.3, 1.4 */ @@ -36,16 +37,16 @@ pixmap calls #endif #if XRDP_PIX == 2 -PixmapPtr +extern _X_EXPORT PixmapPtr rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, unsigned usage_hint); #else -PixmapPtr +extern _X_EXPORT PixmapPtr rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth); #endif -Bool +extern _X_EXPORT Bool rdpDestroyPixmap(PixmapPtr pPixmap); -Bool +extern _X_EXPORT Bool rdpModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, int bitsPerPixel, int devKind, pointer pPixData); diff --git a/xorg/server/module/rdpPolyArc.c b/xorg/server/module/rdpPolyArc.c index 9a701dd8..8db3cffe 100644 --- a/xorg/server/module/rdpPolyArc.c +++ b/xorg/server/module/rdpPolyArc.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyArc.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyArc.h b/xorg/server/module/rdpPolyArc.h index 7ebadc35..9af6566f 100644 --- a/xorg/server/module/rdpPolyArc.h +++ b/xorg/server/module/rdpPolyArc.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYARC_H #define __RDPPOLYARC_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc* parcs); #endif diff --git a/xorg/server/module/rdpPolyFillArc.c b/xorg/server/module/rdpPolyFillArc.c index 437929ae..2ba49854 100644 --- a/xorg/server/module/rdpPolyFillArc.c +++ b/xorg/server/module/rdpPolyFillArc.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyFillArc.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyFillArc.h b/xorg/server/module/rdpPolyFillArc.h index 9a9846e1..708f8eae 100644 --- a/xorg/server/module/rdpPolyFillArc.h +++ b/xorg/server/module/rdpPolyFillArc.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYFILLARC_H #define __RDPPOLYFILLARC_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc* parcs); #endif diff --git a/xorg/server/module/rdpPolyFillRect.c b/xorg/server/module/rdpPolyFillRect.c index f61202b2..1b99b1e8 100644 --- a/xorg/server/module/rdpPolyFillRect.c +++ b/xorg/server/module/rdpPolyFillRect.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyFillRect.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyFillRect.h b/xorg/server/module/rdpPolyFillRect.h index 94ac4b59..ab2c3c5f 100644 --- a/xorg/server/module/rdpPolyFillRect.h +++ b/xorg/server/module/rdpPolyFillRect.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYFILLRECT_H #define __RDPPOLYFILLRECT_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle* prectInit); diff --git a/xorg/server/module/rdpPolyGlyphBlt.c b/xorg/server/module/rdpPolyGlyphBlt.c index e43e676b..df48dcd4 100644 --- a/xorg/server/module/rdpPolyGlyphBlt.c +++ b/xorg/server/module/rdpPolyGlyphBlt.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyGlyphBlt.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyGlyphBlt.h b/xorg/server/module/rdpPolyGlyphBlt.h index 46ce1ac2..92b2dfbe 100644 --- a/xorg/server/module/rdpPolyGlyphBlt.h +++ b/xorg/server/module/rdpPolyGlyphBlt.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYGLYPHBLT_H #define __RDPPOLYGLYPHBLT_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr* ppci, pointer pglyphBase); diff --git a/xorg/server/module/rdpPolyPoint.c b/xorg/server/module/rdpPolyPoint.c index 5dfac5ef..9624f829 100644 --- a/xorg/server/module/rdpPolyPoint.c +++ b/xorg/server/module/rdpPolyPoint.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyPoint.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyPoint.h b/xorg/server/module/rdpPolyPoint.h index 06d1d428..9acc4d10 100644 --- a/xorg/server/module/rdpPolyPoint.h +++ b/xorg/server/module/rdpPolyPoint.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYPOINT_H #define __RDPPOLYPOINT_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr in_pts); diff --git a/xorg/server/module/rdpPolyRectangle.c b/xorg/server/module/rdpPolyRectangle.c index 18311907..946e798a 100644 --- a/xorg/server/module/rdpPolyRectangle.c +++ b/xorg/server/module/rdpPolyRectangle.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyRectangle.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyRectangle.h b/xorg/server/module/rdpPolyRectangle.h index d09446d5..6cd190d9 100644 --- a/xorg/server/module/rdpPolyRectangle.h +++ b/xorg/server/module/rdpPolyRectangle.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYRECTANGLE_H #define __RDPPOLYRECTANGLE_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nrects, xRectangle* rects); diff --git a/xorg/server/module/rdpPolySegment.c b/xorg/server/module/rdpPolySegment.c index 98e4eb1f..ad01bda1 100644 --- a/xorg/server/module/rdpPolySegment.c +++ b/xorg/server/module/rdpPolySegment.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolySegment.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolySegment.h b/xorg/server/module/rdpPolySegment.h index 104fc37d..37756ae1 100644 --- a/xorg/server/module/rdpPolySegment.h +++ b/xorg/server/module/rdpPolySegment.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYSEGMENT_H #define __RDPPOLYSEGMENT_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment* pSegs); #endif diff --git a/xorg/server/module/rdpPolyText16.c b/xorg/server/module/rdpPolyText16.c index 90d68a8c..eaa34323 100644 --- a/xorg/server/module/rdpPolyText16.c +++ b/xorg/server/module/rdpPolyText16.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyText16.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyText16.h b/xorg/server/module/rdpPolyText16.h index 9719a890..c94a8fd9 100644 --- a/xorg/server/module/rdpPolyText16.h +++ b/xorg/server/module/rdpPolyText16.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYTEXT16_H #define __RDPPOLYTEXT16_H -int +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT int rdpPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short* chars); diff --git a/xorg/server/module/rdpPolyText8.c b/xorg/server/module/rdpPolyText8.c index 630bc04e..aa744b59 100644 --- a/xorg/server/module/rdpPolyText8.c +++ b/xorg/server/module/rdpPolyText8.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolyText8.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolyText8.h b/xorg/server/module/rdpPolyText8.h index 621251b9..64ce2f3e 100644 --- a/xorg/server/module/rdpPolyText8.h +++ b/xorg/server/module/rdpPolyText8.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYTEXT8_H #define __RDPPOLYTEXT8_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + int rdpPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char* chars); diff --git a/xorg/server/module/rdpPolylines.c b/xorg/server/module/rdpPolylines.c index da979e9f..cd87ecf3 100644 --- a/xorg/server/module/rdpPolylines.c +++ b/xorg/server/module/rdpPolylines.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPolylines.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPolylines.h b/xorg/server/module/rdpPolylines.h index 56b66a77..db11d69c 100644 --- a/xorg/server/module/rdpPolylines.h +++ b/xorg/server/module/rdpPolylines.h @@ -22,6 +22,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPOLYLINES_H #define __RDPPOLYLINES_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + void rdpPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit); diff --git a/xorg/server/module/rdpPri.h b/xorg/server/module/rdpPri.h index 97e570f5..f312c88c 100644 --- a/xorg/server/module/rdpPri.h +++ b/xorg/server/module/rdpPri.h @@ -24,24 +24,28 @@ to deal with privates changing in xorg versions #ifndef _XRDPPRI_H #define _XRDPPRI_H +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + #include <screenint.h> #include <gc.h> typedef void* rdpDevPrivateKey; -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocateGCPrivate(ScreenPtr pScreen, int bytes); -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocatePixmapPrivate(ScreenPtr pScreen, int bytes); -rdpDevPrivateKey +extern _X_EXPORT rdpDevPrivateKey rdpAllocateWindowPrivate(ScreenPtr pScreen, int bytes); -void* +extern _X_EXPORT void* rdpGetGCPrivate(GCPtr pGC, rdpDevPrivateKey key); -void* +extern _X_EXPORT void* rdpGetPixmapPrivate(PixmapPtr pPixmap, rdpDevPrivateKey key); -void* +extern _X_EXPORT void* rdpGetWindowPrivate(WindowPtr pWindow, rdpDevPrivateKey key); -int +extern _X_EXPORT int rdpPrivateInit(void); #endif diff --git a/xorg/server/module/rdpPushPixels.c b/xorg/server/module/rdpPushPixels.c index 8ab046b8..902b4251 100644 --- a/xorg/server/module/rdpPushPixels.c +++ b/xorg/server/module/rdpPushPixels.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -32,13 +33,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpPushPixels.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ do { if (_level < LOG_LEVEL) { ErrorF _args ; ErrorF("\n"); } } while (0) /******************************************************************************/ -void +static void rdpPushPixelsOrg(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y) { diff --git a/xorg/server/module/rdpPushPixels.h b/xorg/server/module/rdpPushPixels.h index a3e49482..afc336de 100644 --- a/xorg/server/module/rdpPushPixels.h +++ b/xorg/server/module/rdpPushPixels.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPUSHPIXELS_H #define __RDPPUSHPIXELS_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y); diff --git a/xorg/server/module/rdpPutImage.c b/xorg/server/module/rdpPutImage.c index b7134479..39bf284e 100644 --- a/xorg/server/module/rdpPutImage.c +++ b/xorg/server/module/rdpPutImage.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -34,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdpDraw.h" #include "rdpClientCon.h" #include "rdpReg.h" +#include "rdpPutImage.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ diff --git a/xorg/server/module/rdpPutImage.h b/xorg/server/module/rdpPutImage.h index f50a9528..2df9a801 100644 --- a/xorg/server/module/rdpPutImage.h +++ b/xorg/server/module/rdpPutImage.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPPUTIMAGE_H #define __RDPPUTIMAGE_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, int w, int h, int leftPad, int format, char* pBits); diff --git a/xorg/server/module/rdpRandR.c b/xorg/server/module/rdpRandR.c index 37577645..049aafab 100644 --- a/xorg/server/module/rdpRandR.c +++ b/xorg/server/module/rdpRandR.c @@ -42,6 +42,7 @@ RandR draw calls #include "rdpDraw.h" #include "rdpReg.h" #include "rdpMisc.h" +#include "rdpRandR.h" /******************************************************************************/ #define LOG_LEVEL 1 @@ -119,8 +120,9 @@ rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height, pScreen->mmWidth = mmWidth; pScreen->mmHeight = mmHeight; screenPixmap = pScreen->GetScreenPixmap(pScreen); - g_free(dev->pfbMemory); - dev->pfbMemory = (char *) g_malloc(dev->sizeInBytes, 1); + g_free(dev->pfbMemory_alloc); + dev->pfbMemory_alloc = (char *) g_malloc(dev->sizeInBytes + 16, 1); + dev->pfbMemory = (char *) RDPALIGN(dev->pfbMemory_alloc, 16); if (screenPixmap != 0) { pScreen->ModifyPixmapHeader(screenPixmap, width, height, diff --git a/xorg/server/module/rdpRandR.h b/xorg/server/module/rdpRandR.h index caadf336..ab31e345 100644 --- a/xorg/server/module/rdpRandR.h +++ b/xorg/server/module/rdpRandR.h @@ -22,38 +22,42 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _RDPRANDR_H #define _RDPRANDR_H -Bool +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT Bool rdpRRRegisterSize(ScreenPtr pScreen, int width, int height); -Bool +extern _X_EXPORT Bool rdpRRGetInfo(ScreenPtr pScreen, Rotation* pRotations); -Bool +extern _X_EXPORT Bool rdpRRSetConfig(ScreenPtr pScreen, Rotation rotateKind, int rate, RRScreenSizePtr pSize); -Bool +extern _X_EXPORT Bool rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight); -Bool +extern _X_EXPORT Bool rdpRRCrtcSet(ScreenPtr pScreen, RRCrtcPtr crtc, RRModePtr mode, int x, int y, Rotation rotation, int numOutputs, RROutputPtr* outputs); -Bool +extern _X_EXPORT Bool rdpRRCrtcSetGamma(ScreenPtr pScreen, RRCrtcPtr crtc); -Bool +extern _X_EXPORT Bool rdpRRCrtcGetGamma(ScreenPtr pScreen, RRCrtcPtr crtc); -Bool +extern _X_EXPORT Bool rdpRROutputSetProperty(ScreenPtr pScreen, RROutputPtr output, Atom property, RRPropertyValuePtr value); -Bool +extern _X_EXPORT Bool rdpRROutputValidateMode(ScreenPtr pScreen, RROutputPtr output, RRModePtr mode); -void +extern _X_EXPORT void rdpRRModeDestroy(ScreenPtr pScreen, RRModePtr mode); -Bool +extern _X_EXPORT Bool rdpRROutputGetProperty(ScreenPtr pScreen, RROutputPtr output, Atom property); -Bool +extern _X_EXPORT Bool rdpRRGetPanning(ScreenPtr pScrn, RRCrtcPtr crtc, BoxPtr totalArea, BoxPtr trackingArea, INT16* border); -Bool +extern _X_EXPORT Bool rdpRRSetPanning(ScreenPtr pScrn, RRCrtcPtr crtc, BoxPtr totalArea, BoxPtr trackingArea, INT16* border); diff --git a/xorg/server/module/rdpReg.c b/xorg/server/module/rdpReg.c index 8ff7d79d..30b13438 100644 --- a/xorg/server/module/rdpReg.c +++ b/xorg/server/module/rdpReg.c @@ -33,6 +33,8 @@ to deal with regions changing in xorg versions #include <xf86.h> #include <xf86_OSproc.h> +#include "rdpReg.h" + /* miRegionCopy -> RegionCopy miTranslateRegion -> RegionTranslate diff --git a/xorg/server/module/rdpReg.h b/xorg/server/module/rdpReg.h index a5cd73bf..053cf6dd 100644 --- a/xorg/server/module/rdpReg.h +++ b/xorg/server/module/rdpReg.h @@ -24,41 +24,45 @@ to deal with regions changing in xorg versions #ifndef __RDPREG_H #define __RDPREG_H -Bool +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT Bool rdpRegionCopy(RegionPtr dst, RegionPtr src); -void +extern _X_EXPORT void rdpRegionTranslate(RegionPtr pReg, int x, int y); -Bool +extern _X_EXPORT Bool rdpRegionNotEmpty(RegionPtr pReg); -Bool +extern _X_EXPORT Bool rdpRegionIntersect(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -int +extern _X_EXPORT int rdpRegionContainsRect(RegionPtr region, BoxPtr prect); -void +extern _X_EXPORT void rdpRegionInit(RegionPtr pReg, BoxPtr rect, int size); -void +extern _X_EXPORT void rdpRegionUninit(RegionPtr pReg); -RegionPtr +extern _X_EXPORT RegionPtr rdpRegionFromRects(int nrects, xRectanglePtr prect, int ctype); -void +extern _X_EXPORT void rdpRegionDestroy(RegionPtr pReg); -RegionPtr +extern _X_EXPORT RegionPtr rdpRegionCreate(BoxPtr rect, int size); -Bool +extern _X_EXPORT Bool rdpRegionUnion(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -Bool +extern _X_EXPORT Bool rdpRegionSubtract(RegionPtr newReg, RegionPtr reg1, RegionPtr reg2); -Bool +extern _X_EXPORT Bool rdpRegionInverse(RegionPtr newReg, RegionPtr reg1, BoxPtr invRect); -BoxPtr +extern _X_EXPORT BoxPtr rdpRegionExtents(RegionPtr pReg); -void +extern _X_EXPORT void rdpRegionReset(RegionPtr pReg, BoxPtr pBox); -Bool +extern _X_EXPORT Bool rdpRegionBreak(RegionPtr pReg); -void +extern _X_EXPORT void rdpRegionUnionRect(RegionPtr pReg, BoxPtr prect); -int +extern _X_EXPORT int rdpRegionPixelCount(RegionPtr pReg); #endif diff --git a/xorg/server/module/rdpSetSpans.c b/xorg/server/module/rdpSetSpans.c index e31ec6d4..3cb30321 100644 --- a/xorg/server/module/rdpSetSpans.c +++ b/xorg/server/module/rdpSetSpans.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> @@ -32,6 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "rdp.h" #include "rdpDraw.h" +#include "rdpSetSpans.h" #define LDEBUG 0 diff --git a/xorg/server/module/rdpSetSpans.h b/xorg/server/module/rdpSetSpans.h index c6f73642..3b277f92 100644 --- a/xorg/server/module/rdpSetSpans.h +++ b/xorg/server/module/rdpSetSpans.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RDPSETSPANS_H #define __RDPSETSPANS_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpSetSpans(DrawablePtr pDrawable, GCPtr pGC, char* psrc, DDXPointPtr ppt, int* pwidth, int nspans, int fSorted); diff --git a/xorg/server/module/rdpSimd.c b/xorg/server/module/rdpSimd.c index 7215bf86..be4bc736 100644 --- a/xorg/server/module/rdpSimd.c +++ b/xorg/server/module/rdpSimd.c @@ -35,6 +35,8 @@ SIMD function asign #include "rdp.h" #include "rdpXv.h" +#include "rdpCapture.h" +#include "rdpSimd.h" /* use simd, run time */ int g_simd_use_accel = 1; @@ -65,6 +67,11 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev = XRDPPTR(pScrn); /* assign functions */ LLOGLN(0, ("rdpSimdInit: assigning yuv functions")); + dev->yv12_to_rgb32 = YV12_to_RGB32; + dev->i420_to_rgb32 = I420_to_RGB32; + dev->yuy2_to_rgb32 = YUY2_to_RGB32; + dev->uyvy_to_rgb32 = UYVY_to_RGB32; + dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box; #if SIMD_USE_ACCEL if (g_simd_use_accel) { @@ -81,14 +88,6 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev->uyvy_to_rgb32 = uyvy_to_rgb32_amd64_sse2; LLOGLN(0, ("rdpSimdInit: sse2 amd64 yuv functions assigned")); } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } #elif defined(__x86__) || defined(_M_IX86) || defined(__i386__) int ax, bx, cx, dx; cpuid_x86(1, 0, &ax, &bx, &cx, &dx); @@ -100,38 +99,11 @@ rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) dev->i420_to_rgb32 = i420_to_rgb32_x86_sse2; dev->yuy2_to_rgb32 = yuy2_to_rgb32_x86_sse2; dev->uyvy_to_rgb32 = uyvy_to_rgb32_x86_sse2; + dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box_x86_sse2; LLOGLN(0, ("rdpSimdInit: sse2 x86 yuv functions assigned")); } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } -#else - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); #endif } - else - { - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); - } -#else - dev->yv12_to_rgb32 = YV12_to_RGB32; - dev->i420_to_rgb32 = I420_to_RGB32; - dev->yuy2_to_rgb32 = YUY2_to_RGB32; - dev->uyvy_to_rgb32 = UYVY_to_RGB32; - LLOGLN(0, ("rdpSimdInit: warning, c yuv functions assigned")); #endif return 1; } diff --git a/xorg/server/module/rdpSimd.h b/xorg/server/module/rdpSimd.h index 73bf1ba5..f73e110f 100644 --- a/xorg/server/module/rdpSimd.h +++ b/xorg/server/module/rdpSimd.h @@ -28,7 +28,7 @@ SIMD function asign #include <xorgVersion.h> #include <xf86.h> -Bool +extern _X_EXPORT Bool rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn); #endif diff --git a/xorg/server/module/rdpTrapezoids.c b/xorg/server/module/rdpTrapezoids.c index 212780ce..41304a71 100644 --- a/xorg/server/module/rdpTrapezoids.c +++ b/xorg/server/module/rdpTrapezoids.c @@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* this should be before all X11 .h files */ #include <xorg-server.h> +#include <xorgVersion.h> /* all driver need this */ #include <xf86.h> diff --git a/xorg/server/module/rdpTrapezoids.h b/xorg/server/module/rdpTrapezoids.h index 77738dc4..a98cacd3 100644 --- a/xorg/server/module/rdpTrapezoids.h +++ b/xorg/server/module/rdpTrapezoids.h @@ -22,7 +22,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _RDPTRAPEZOIDS_H #define _RDPTRAPEZOIDS_H -void +#include <xorg-server.h> +#include <xorgVersion.h> +#include <xf86.h> + +extern _X_EXPORT void rdpTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps); diff --git a/xorg/server/module/rdpXv.c b/xorg/server/module/rdpXv.c index 1557f892..15375720 100644 --- a/xorg/server/module/rdpXv.c +++ b/xorg/server/module/rdpXv.c @@ -43,6 +43,7 @@ XVideo #include "rdpMisc.h" #include "rdpReg.h" #include "rdpClientCon.h" +#include "rdpXv.h" #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ @@ -502,6 +503,7 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, rgbend32 = rgborg32 + width * height; rgbend32 = (int *) RDPALIGN(rgbend32, 16); error = 0; + switch (format) { case FOURCC_YV12: @@ -528,12 +530,21 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, { return Success; } - error = stretch_RGB32_RGB32(rgborg32, width, height, - src_x, src_y, src_w, src_h, - rgbend32, drw_w, drw_h); - if (error != 0) + if ((width == drw_w) && (height == drw_h)) { - return Success; + LLOGLN(10, ("xrdpVidPutImage: strech skip")); + rgbend32 = rgborg32; + } + else + { + error = stretch_RGB32_RGB32(rgborg32, width, height, + src_x, src_y, src_w, src_h, + rgbend32, drw_w, drw_h); + if (error != 0) + { + return Success; + } + } tempGC = GetScratchGC(dst->depth, pScrn->pScreen); @@ -542,7 +553,8 @@ xrdpVidPutImage(ScrnInfoPtr pScrn, ValidateGC(dst, tempGC); (*tempGC->ops->PutImage)(dst, tempGC, 24, drw_x - dst->x, drw_y - dst->y, - drw_w, drw_h, 0, ZPixmap, (char*)rgbend32); + drw_w, drw_h, 0, ZPixmap, + (char *) rgbend32); FreeScratchGC(tempGC); } diff --git a/xorg/server/module/rdpXv.h b/xorg/server/module/rdpXv.h index 9cf28700..2dbbc729 100644 --- a/xorg/server/module/rdpXv.h +++ b/xorg/server/module/rdpXv.h @@ -28,16 +28,15 @@ XVideo #include <xorgVersion.h> #include <xf86.h> -Bool +extern _X_EXPORT Bool rdpXvInit(ScreenPtr pScreen, ScrnInfoPtr pScrn); - -int +extern _X_EXPORT int YV12_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int I420_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int YUY2_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); -int +extern _X_EXPORT int UYVY_to_RGB32(unsigned char *yuvs, int width, int height, int *rgbs); #endif diff --git a/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm b/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm new file mode 100644 index 00000000..72563214 --- /dev/null +++ b/xorg/server/module/x86/a8r8g8b8_to_a8b8g8r8_box_x86_sse2.asm @@ -0,0 +1,174 @@ +; +;Copyright 2014 Jay Sorg +; +;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. +; +;The above copyright notice and this permission notice shall be included in +;all copies or substantial portions of the Software. +; +;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +;OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +;AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +;CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +; +;ARGB to ABGR +;x86 SSE2 32 bit +; + +SECTION .data +align 16 +c1 times 4 dd 0xFF00FF00 +c2 times 4 dd 0x00FF0000 +c3 times 4 dd 0x000000FF + +SECTION .text + +%macro PROC 1 + align 16 + global %1 + %1: +%endmacro + +;int +;a8r8g8b8_to_a8b8g8r8_box_x86_sse2(char *s8, int src_stride, +; char *d8, int dst_stride, +; int width, int height); +PROC a8r8g8b8_to_a8b8g8r8_box_x86_sse2 + push ebx + push esi + push edi + push ebp + + movdqa xmm4, [c1] + movdqa xmm5, [c2] + movdqa xmm6, [c3] + + mov esi, [esp + 20] ; src + mov edi, [esp + 28] ; dst + +loop_y: + mov ecx, [esp + 36] ; width + +loop_xpre: + mov eax, esi ; look for aligned + and eax, 0x0F ; we can jump to next + mov ebx, eax + mov eax, edi + and eax, 0x0F + or eax, ebx + cmp eax, 0 + je done_loop_xpre + cmp ecx, 1 + jl done_loop_x ; all done with this row + mov eax, [esi] + lea esi, [esi + 4] + mov edx, eax ; a and g + and edx, 0xFF00FF00 + mov ebx, eax ; r + and ebx, 0x00FF0000 + shr ebx, 16 + or edx, ebx + mov ebx, eax ; b + and ebx, 0x000000FF + shl ebx, 16 + or edx, ebx + mov [edi], edx + lea edi, [edi + 4] + dec ecx + jmp loop_xpre; +done_loop_xpre: + + prefetchnta [esi] + +; A R G B A R G B A R G B A R G B to +; A B G R A B G R A B G R A B G R + +loop_x8: + cmp ecx, 8 + jl done_loop_x8 + + prefetchnta [esi + 32] + + movdqa xmm0, [esi] + lea esi, [esi + 16] + movdqa xmm3, xmm0 ; a and g + pand xmm3, xmm4 + movdqa xmm1, xmm0 ; r + pand xmm1, xmm5 + psrld xmm1, 16 + por xmm3, xmm1 + movdqa xmm1, xmm0 ; b + pand xmm1, xmm6 + pslld xmm1, 16 + por xmm3, xmm1 + movdqa [edi], xmm3 + lea edi, [edi + 16] + sub ecx, 4 + + movdqa xmm0, [esi] + lea esi, [esi + 16] + movdqa xmm3, xmm0 ; a and g + pand xmm3, xmm4 + movdqa xmm1, xmm0 ; r + pand xmm1, xmm5 + psrld xmm1, 16 + por xmm3, xmm1 + movdqa xmm1, xmm0 ; b + pand xmm1, xmm6 + pslld xmm1, 16 + por xmm3, xmm1 + movdqa [edi], xmm3 + lea edi, [edi + 16] + sub ecx, 4 + + jmp loop_x8; +done_loop_x8: + +loop_x: + cmp ecx, 1 + jl done_loop_x + mov eax, [esi] + lea esi, [esi + 4] + mov edx, eax ; a and g + and edx, 0xFF00FF00 + mov ebx, eax ; r + and ebx, 0x00FF0000 + shr ebx, 16 + or edx, ebx + mov ebx, eax ; b + and ebx, 0x000000FF + shl ebx, 16 + or edx, ebx + mov [edi], edx + lea edi, [edi + 4] + dec ecx + jmp loop_x; +done_loop_x: + + mov esi, [esp + 20] + add esi, [esp + 24] + mov [esp + 20], esi + + mov edi, [esp + 28] + add edi, [esp + 32] + mov [esp + 28], edi + + mov ecx, [esp + 40] ; height + dec ecx + mov [esp + 40], ecx + jnz loop_y + + mov eax, 0 ; return value + pop ebp + pop edi + pop esi + pop ebx + ret + align 16 + diff --git a/xorg/server/module/x86/funcs_x86.h b/xorg/server/module/x86/funcs_x86.h index 00724e62..775dd12d 100644 --- a/xorg/server/module/x86/funcs_x86.h +++ b/xorg/server/module/x86/funcs_x86.h @@ -34,6 +34,10 @@ int yuy2_to_rgb32_x86_sse2(unsigned char *yuvs, int width, int height, int *rgbs); int uyvy_to_rgb32_x86_sse2(unsigned char *yuvs, int width, int height, int *rgbs); +int +a8r8g8b8_to_a8b8g8r8_box_x86_sse2(char *s8, int src_stride, + char *d8, int dst_stride, + int width, int height); #endif |