/[rdesktop]/sourceforge.net/branches/seamlessrdp-branch/rdesktop/xwin.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/branches/seamlessrdp-branch/rdesktop/xwin.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 688 by jsorg71, Fri Apr 30 19:14:15 2004 UTC revision 713 by jsorg71, Wed Jun 16 03:08:55 2004 UTC
# Line 45  static Screen *g_screen; Line 45  static Screen *g_screen;
45  Window g_wnd;  Window g_wnd;
46  extern uint32 g_embed_wnd;  extern uint32 g_embed_wnd;
47  BOOL g_enable_compose = False;  BOOL g_enable_compose = False;
48  BOOL g_Unobscured; /* used for screenblt */  BOOL g_Unobscured;              /* used for screenblt */
49  static GC g_gc = NULL;  static GC g_gc = NULL;
50  static Visual *g_visual;  static Visual *g_visual;
51  static int g_depth;  static int g_depth;
# Line 172  static PixelColour Line 172  static PixelColour
172  split_colour15(uint32 colour)  split_colour15(uint32 colour)
173  {  {
174          PixelColour rv;          PixelColour rv;
175          rv.red = (colour & 0x7c00) >> 7;          rv.red = ((colour >> 7) & 0xf8) | ((colour >> 12) & 0x7);
176          rv.green = (colour & 0x03e0) >> 2;          rv.green = ((colour >> 2) & 0xf8) | ((colour >> 8) & 0x7);
177          rv.blue = (colour & 0x001f) << 3;          rv.blue = ((colour << 3) & 0xf8) | ((colour >> 2) & 0x7);
178          return rv;          return rv;
179  }  }
180    
# Line 182  static PixelColour Line 182  static PixelColour
182  split_colour16(uint32 colour)  split_colour16(uint32 colour)
183  {  {
184          PixelColour rv;          PixelColour rv;
185          rv.red = (colour & 0xf800) >> 8;          rv.red = ((colour >> 8) & 0xf8) | ((colour >> 13) & 0x7);
186          rv.green = (colour & 0x07e0) >> 3;          rv.green = ((colour >> 3) & 0xfc) | ((colour >> 9) & 0x3);
187          rv.blue = (colour & 0x001f) << 3;          rv.blue = ((colour << 3) & 0xf8) | ((colour >> 2) & 0x7);
188          return rv;          return rv;
189  }  }
190    
# Line 230  translate_colour(uint32 colour) Line 230  translate_colour(uint32 colour)
230          return make_colour(pc);          return make_colour(pc);
231  }  }
232    
233    /* indent is confused by UNROLL8 */
234    /* *INDENT-OFF* */
235    
236    /* repeat and unroll, similar to bitmap.c */
237    /* potentialy any of the following translate */
238    /* functions can use repeat but just doing */
239    /* the most common ones */
240    
241  #define UNROLL8(stm) { stm stm stm stm stm stm stm stm }  #define UNROLL8(stm) { stm stm stm stm stm stm stm stm }
242  #define REPEAT(stm) \  /* 2 byte output repeat */
243    #define REPEAT2(stm) \
244    { \
245            while (out <= end - 8 * 2) \
246                    UNROLL8(stm) \
247            while (out < end) \
248                    { stm } \
249    }
250    /* 4 byte output repeat */
251    #define REPEAT4(stm) \
252  { \  { \
253          while (out <= end - 8 * 4) \          while (out <= end - 8 * 4) \
254                  UNROLL8(stm) \                  UNROLL8(stm) \
# Line 252  translate8to16(uint8 * data, uint8 * out Line 269  translate8to16(uint8 * data, uint8 * out
269          uint16 value;          uint16 value;
270    
271          if (g_arch_match)          if (g_arch_match)
272                  REPEAT(*(((uint16*)out)++) = g_colmap[*(data++)];)          {
273                    REPEAT2
274                    (
275                            *((uint16 *) out) = g_colmap[*(data++)];
276                            out += 2;
277                    )
278            }
279          else if (g_xserver_be)          else if (g_xserver_be)
280          {          {
281                  while (out < end)                  while (out < end)
# Line 307  translate8to32(uint8 * data, uint8 * out Line 330  translate8to32(uint8 * data, uint8 * out
330          uint32 value;          uint32 value;
331    
332          if (g_arch_match)          if (g_arch_match)
333                  REPEAT(*(((uint32*)out)++) = g_colmap[*(data++)];)          {
334                    REPEAT4
335                    (
336                            *((uint32 *) out) = g_colmap[*(data++)];
337                            out += 4;
338                    )
339            }
340          else if (g_xserver_be)          else if (g_xserver_be)
341          {          {
342                  while (out < end)                  while (out < end)
# Line 332  translate8to32(uint8 * data, uint8 * out Line 361  translate8to32(uint8 * data, uint8 * out
361          }          }
362  }  }
363    
364    /* *INDENT-ON* */
365    
366  static void  static void
367  translate15to16(uint16 * data, uint8 * out, uint8 * end)  translate15to16(uint16 * data, uint8 * out, uint8 * end)
368  {  {
# Line 1027  void Line 1058  void
1058  ui_resize_window()  ui_resize_window()
1059  {  {
1060          XSizeHints *sizehints;          XSizeHints *sizehints;
1061            Pixmap bs;
1062    
1063          sizehints = XAllocSizeHints();          sizehints = XAllocSizeHints();
1064          if (sizehints)          if (sizehints)
# Line 1042  ui_resize_window() Line 1074  ui_resize_window()
1074          {          {
1075                  XResizeWindow(g_display, g_wnd, g_width, g_height);                  XResizeWindow(g_display, g_wnd, g_width, g_height);
1076          }          }
1077    
1078            /* create new backstore pixmap */
1079            if (g_backstore != 0)
1080            {
1081                    bs = XCreatePixmap(g_display, g_wnd, g_width, g_height, g_depth);
1082                    XSetForeground(g_display, g_gc, BlackPixelOfScreen(g_screen));
1083                    XFillRectangle(g_display, bs, g_gc, 0, 0, g_width, g_height);
1084                    XCopyArea(g_display, g_backstore, bs, g_gc, 0, 0, g_width, g_height, 0, 0);
1085                    XFreePixmap(g_display, g_backstore);
1086                    g_backstore = bs;
1087            }
1088  }  }
1089    
1090  void  void
# Line 1857  ui_screenblt(uint8 opcode, Line 1900  ui_screenblt(uint8 opcode,
1900                  if (g_Unobscured)                  if (g_Unobscured)
1901                  {                  {
1902                          XCopyArea(g_display, g_wnd, g_wnd, g_gc, srcx, srcy, cx, cy, x, y);                          XCopyArea(g_display, g_wnd, g_wnd, g_gc, srcx, srcy, cx, cy, x, y);
1903                          XCopyArea(g_display, g_backstore, g_backstore, g_gc, srcx, srcy, cx, cy, x, y);                          XCopyArea(g_display, g_backstore, g_backstore, g_gc, srcx, srcy, cx, cy, x,
1904                                      y);
1905                  }                  }
1906                  else                  else
1907                  {                  {
1908                          XCopyArea(g_display, g_backstore, g_wnd, g_gc, srcx, srcy, cx, cy, x, y);                          XCopyArea(g_display, g_backstore, g_wnd, g_gc, srcx, srcy, cx, cy, x, y);
1909                          XCopyArea(g_display, g_backstore, g_backstore, g_gc, srcx, srcy, cx, cy, x, y);                          XCopyArea(g_display, g_backstore, g_backstore, g_gc, srcx, srcy, cx, cy, x,
1910                                      y);
1911                  }                  }
1912          }          }
1913          else          else
# Line 2138  ui_desktop_restore(uint32 offset, int x, Line 2183  ui_desktop_restore(uint32 offset, int x,
2183    
2184          XFree(image);          XFree(image);
2185  }  }
2186    
2187    /* these do nothing here but are used in uiports */
2188    void
2189    ui_begin_update(void)
2190    {
2191    }
2192    
2193    void
2194    ui_end_update(void)
2195    {
2196    }

Legend:
Removed from v.688  
changed lines
  Added in v.713

  ViewVC Help
Powered by ViewVC 1.1.26