/[rdesktop]/sourceforge.net/trunk/rdesktop/orders.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/trunk/rdesktop/orders.c

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

revision 64 by astrand, Thu Jul 18 16:38:31 2002 UTC revision 683 by n-ki, Tue Apr 27 12:55:33 2004 UTC
# Line 1  Line 1 
1  /*  /* -*- c-basic-offset: 8 -*-
2     rdesktop: A Remote Desktop Protocol client.     rdesktop: A Remote Desktop Protocol client.
3     RDP order processing     RDP order processing
4     Copyright (C) Matthew Chapman 1999-2001     Copyright (C) Matthew Chapman 1999-2002
5    
6     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
# Line 21  Line 21 
21  #include "rdesktop.h"  #include "rdesktop.h"
22  #include "orders.h"  #include "orders.h"
23    
24  extern uint8 *next_packet;  extern uint8 *g_next_packet;
25  static RDP_ORDER_STATE order_state;  static RDP_ORDER_STATE g_order_state;
26    extern BOOL g_use_rdp5;
27    
28  /* Read field indicating which parameters are present */  /* Read field indicating which parameters are present */
29  static void  static void
# Line 54  rdp_in_present(STREAM s, uint32 * presen Line 55  rdp_in_present(STREAM s, uint32 * presen
55    
56  /* Read a co-ordinate (16-bit, or 8-bit delta) */  /* Read a co-ordinate (16-bit, or 8-bit delta) */
57  static void  static void
58  rdp_in_coord(STREAM s, uint16 * coord, BOOL delta)  rdp_in_coord(STREAM s, sint16 * coord, BOOL delta)
59  {  {
60          uint8 change;          sint8 change;
61    
62          if (delta)          if (delta)
63          {          {
64                  in_uint8(s, change);                  in_uint8(s, change);
65                  *coord += (signed char) change;                  *coord += change;
66          }          }
67          else          else
68          {          {
# Line 71  rdp_in_coord(STREAM s, uint16 * coord, B Line 72  rdp_in_coord(STREAM s, uint16 * coord, B
72    
73  /* Read a colour entry */  /* Read a colour entry */
74  static void  static void
75  rdp_in_colour(STREAM s, uint8 * colour)  rdp_in_colour(STREAM s, uint32 * colour)
76  {  {
77          in_uint8(s, *colour);          uint32 i;
78          s->p += 2;          in_uint8(s, i);
79            *colour = i;
80            in_uint8(s, i);
81            *colour |= i << 8;
82            in_uint8(s, i);
83            *colour |= i << 16;
84  }  }
85    
86  /* Parse bounds information */  /* Parse bounds information */
# Line 198  process_patblt(STREAM s, PATBLT_ORDER * Line 204  process_patblt(STREAM s, PATBLT_ORDER *
204    
205          rdp_parse_brush(s, &os->brush, present >> 7);          rdp_parse_brush(s, &os->brush, present >> 7);
206    
207          DEBUG(("PATBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,bs=%d,bg=0x%x,fg=0x%x)\n", os->opcode, os->x, os->y, os->cx, os->cy, os->brush.style, os->bgcolour, os->fgcolour));          DEBUG(("PATBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,bs=%d,bg=0x%x,fg=0x%x)\n", os->opcode, os->x,
208                   os->y, os->cx, os->cy, os->brush.style, os->bgcolour, os->fgcolour));
209    
210          ui_patblt(ROP2_P(os->opcode), os->x, os->y, os->cx, os->cy,          ui_patblt(ROP2_P(os->opcode), os->x, os->y, os->cx, os->cy,
211                    &os->brush, os->bgcolour, os->fgcolour);                    &os->brush, os->bgcolour, os->fgcolour);
# Line 232  process_screenblt(STREAM s, SCREENBLT_OR Line 239  process_screenblt(STREAM s, SCREENBLT_OR
239          DEBUG(("SCREENBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,srcx=%d,srcy=%d)\n",          DEBUG(("SCREENBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,srcx=%d,srcy=%d)\n",
240                 os->opcode, os->x, os->y, os->cx, os->cy, os->srcx, os->srcy));                 os->opcode, os->x, os->y, os->cx, os->cy, os->srcx, os->srcy));
241    
242          ui_screenblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy,          ui_screenblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy, os->srcx, os->srcy);
                      os->srcx, os->srcy);  
243  }  }
244    
245  /* Process a line order */  /* Process a line order */
# Line 264  process_line(STREAM s, LINE_ORDER * os, Line 270  process_line(STREAM s, LINE_ORDER * os,
270          rdp_parse_pen(s, &os->pen, present >> 7);          rdp_parse_pen(s, &os->pen, present >> 7);
271    
272          DEBUG(("LINE(op=0x%x,sx=%d,sy=%d,dx=%d,dx=%d,fg=0x%x)\n",          DEBUG(("LINE(op=0x%x,sx=%d,sy=%d,dx=%d,dx=%d,fg=0x%x)\n",
273                 os->opcode, os->startx, os->starty, os->endx, os->endy,                 os->opcode, os->startx, os->starty, os->endx, os->endy, os->pen.colour));
                os->pen.colour));  
274    
275          if (os->opcode < 0x01 || os->opcode > 0x10)          if (os->opcode < 0x01 || os->opcode > 0x10)
276          {          {
# Line 273  process_line(STREAM s, LINE_ORDER * os, Line 278  process_line(STREAM s, LINE_ORDER * os,
278                  return;                  return;
279          }          }
280    
281          ui_line(os->opcode - 1, os->startx, os->starty,          ui_line(os->opcode - 1, os->startx, os->starty, os->endx, os->endy, &os->pen);
                 os->endx, os->endy, &os->pen);  
282  }  }
283    
284  /* Process an opaque rectangle order */  /* Process an opaque rectangle order */
285  static void  static void
286  process_rect(STREAM s, RECT_ORDER * os, uint32 present, BOOL delta)  process_rect(STREAM s, RECT_ORDER * os, uint32 present, BOOL delta)
287  {  {
288            uint32 i;
289          if (present & 0x01)          if (present & 0x01)
290                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
291    
# Line 294  process_rect(STREAM s, RECT_ORDER * os, Line 299  process_rect(STREAM s, RECT_ORDER * os,
299                  rdp_in_coord(s, &os->cy, delta);                  rdp_in_coord(s, &os->cy, delta);
300    
301          if (present & 0x10)          if (present & 0x10)
302                  in_uint8(s, os->colour);          {
303                    in_uint8(s, i);
304                    os->colour = (os->colour & 0xffffff00) | i;
305            }
306    
307            if (present & 0x20)
308            {
309                    in_uint8(s, i);
310                    os->colour = (os->colour & 0xffff00ff) | (i << 8);
311            }
312    
313            if (present & 0x40)
314            {
315                    in_uint8(s, i);
316                    os->colour = (os->colour & 0xff00ffff) | (i << 16);
317            }
318    
319          DEBUG(("RECT(x=%d,y=%d,cx=%d,cy=%d,fg=0x%x)\n",          DEBUG(("RECT(x=%d,y=%d,cx=%d,cy=%d,fg=0x%x)\n", os->x, os->y, os->cx, os->cy, os->colour));
                os->x, os->y, os->cx, os->cy, os->colour));  
320    
321          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);
322  }  }
# Line 327  process_desksave(STREAM s, DESKSAVE_ORDE Line 346  process_desksave(STREAM s, DESKSAVE_ORDE
346                  in_uint8(s, os->action);                  in_uint8(s, os->action);
347    
348          DEBUG(("DESKSAVE(l=%d,t=%d,r=%d,b=%d,off=%d,op=%d)\n",          DEBUG(("DESKSAVE(l=%d,t=%d,r=%d,b=%d,off=%d,op=%d)\n",
349                 os->left, os->top, os->right, os->bottom, os->offset,                 os->left, os->top, os->right, os->bottom, os->offset, os->action));
                os->action));  
350    
351          width = os->right - os->left + 1;          width = os->right - os->left + 1;
352          height = os->bottom - os->top + 1;          height = os->bottom - os->top + 1;
# Line 336  process_desksave(STREAM s, DESKSAVE_ORDE Line 354  process_desksave(STREAM s, DESKSAVE_ORDE
354          if (os->action == 0)          if (os->action == 0)
355                  ui_desktop_save(os->offset, os->left, os->top, width, height);                  ui_desktop_save(os->offset, os->left, os->top, width, height);
356          else          else
357                  ui_desktop_restore(os->offset, os->left, os->top, width,                  ui_desktop_restore(os->offset, os->left, os->top, width, height);
                                    height);  
358  }  }
359    
360  /* Process a memory blt order */  /* Process a memory blt order */
# Line 377  process_memblt(STREAM s, MEMBLT_ORDER * Line 394  process_memblt(STREAM s, MEMBLT_ORDER *
394                  in_uint16_le(s, os->cache_idx);                  in_uint16_le(s, os->cache_idx);
395    
396          DEBUG(("MEMBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("MEMBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d)\n",
397                 os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id,                 os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id, os->cache_idx));
                os->cache_idx));  
398    
399          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
400          if (bitmap == NULL)          if (bitmap == NULL)
401                  return;                  return;
402    
403          ui_memblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy,          ui_memblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy, bitmap, os->srcx, os->srcy);
                   bitmap, os->srcx, os->srcy);  
404  }  }
405    
406  /* Process a 3-way blt order */  /* Process a 3-way blt order */
# Line 435  process_triblt(STREAM s, TRIBLT_ORDER * Line 450  process_triblt(STREAM s, TRIBLT_ORDER *
450          if (present & 0x010000)          if (present & 0x010000)
451                  in_uint16_le(s, os->unknown);                  in_uint16_le(s, os->unknown);
452    
453          DEBUG(("TRIBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d,bs=%d,bg=0x%x,fg=0x%x)\n", os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id, os->cache_idx, os->brush.style, os->bgcolour, os->fgcolour));          DEBUG(("TRIBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d,bs=%d,bg=0x%x,fg=0x%x)\n",
454                   os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id, os->cache_idx,
455                   os->brush.style, os->bgcolour, os->fgcolour));
456    
457          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
458          if (bitmap == NULL)          if (bitmap == NULL)
459                  return;                  return;
460    
461          ui_triblt(os->opcode, os->x, os->y, os->cx, os->cy,          ui_triblt(os->opcode, os->x, os->y, os->cx, os->cy,
462                    bitmap, os->srcx, os->srcy,                    bitmap, os->srcx, os->srcy, &os->brush, os->bgcolour, os->fgcolour);
                   &os->brush, os->bgcolour, os->fgcolour);  
463  }  }
464    
465  /* Parse a delta co-ordinate in polyline order form */  /* Parse a delta co-ordinate in polyline order form */
# Line 481  process_polyline(STREAM s, POLYLINE_ORDE Line 497  process_polyline(STREAM s, POLYLINE_ORDE
497                  rdp_in_coord(s, &os->y, delta);                  rdp_in_coord(s, &os->y, delta);
498    
499          if (present & 0x04)          if (present & 0x04)
500                  in_uint8(s, os->flags);                  in_uint8(s, os->opcode);
501    
502          if (present & 0x10)          if (present & 0x10)
503                  rdp_in_colour(s, &os->fgcolour);                  rdp_in_colour(s, &os->fgcolour);
# Line 494  process_polyline(STREAM s, POLYLINE_ORDE Line 510  process_polyline(STREAM s, POLYLINE_ORDE
510                  in_uint8(s, os->datasize);                  in_uint8(s, os->datasize);
511                  in_uint8a(s, os->data, os->datasize);                  in_uint8a(s, os->data, os->datasize);
512          }          }
         if (os->flags & 1)  
                 opcode = ROP2_COPY;  
         else  
                 opcode = ROP2_NXOR;  
513    
514          DEBUG(("POLYLINE(x=%d,y=%d,fl=0x%x,fg=0x%x,n=%d,sz=%d)\n",          DEBUG(("POLYLINE(x=%d,y=%d,op=0x%x,fg=0x%x,n=%d,sz=%d)\n",
515                 os->x, os->y, os->flags, os->fgcolour, os->lines,                 os->x, os->y, os->opcode, os->fgcolour, os->lines, os->datasize));
                os->datasize));  
516    
517          DEBUG(("Data: "));          DEBUG(("Data: "));
518    
# Line 510  process_polyline(STREAM s, POLYLINE_ORDE Line 521  process_polyline(STREAM s, POLYLINE_ORDE
521    
522          DEBUG(("\n"));          DEBUG(("\n"));
523    
524            if (os->opcode < 0x01 || os->opcode > 0x10)
525            {
526                    error("bad ROP2 0x%x\n", os->opcode);
527                    return;
528            }
529    
530            opcode = os->opcode - 1;
531          x = os->x;          x = os->x;
532          y = os->y;          y = os->y;
533          pen.style = pen.width = 0;          pen.style = pen.width = 0;
# Line 588  process_text2(STREAM s, TEXT2_ORDER * os Line 606  process_text2(STREAM s, TEXT2_ORDER * os
606          if (present & 0x002000)          if (present & 0x002000)
607                  in_uint16_le(s, os->boxbottom);                  in_uint16_le(s, os->boxbottom);
608    
609            if (present & 0x004000) /* fix for connecting to a server that */
610                    in_uint8s(s, 10);       /* was disconnected with mstsc.exe */
611            /* 0x008000, 0x020000, and 0x040000 are present too ??? */
612    
613          if (present & 0x080000)          if (present & 0x080000)
614                  in_uint16_le(s, os->x);                  in_uint16_le(s, os->x);
615    
# Line 615  process_text2(STREAM s, TEXT2_ORDER * os Line 637  process_text2(STREAM s, TEXT2_ORDER * os
637                       os->clipbottom - os->cliptop,                       os->clipbottom - os->cliptop,
638                       os->boxleft, os->boxtop,                       os->boxleft, os->boxtop,
639                       os->boxright - os->boxleft,                       os->boxright - os->boxleft,
640                       os->boxbottom - os->boxtop,                       os->boxbottom - os->boxtop, os->bgcolour, os->fgcolour, os->text, os->length);
                      os->bgcolour, os->fgcolour, os->text, os->length);  
641  }  }
642    
643  /* Process a raw bitmap cache order */  /* Process a raw bitmap cache order */
# Line 625  process_raw_bmpcache(STREAM s) Line 646  process_raw_bmpcache(STREAM s)
646  {  {
647          HBITMAP bitmap;          HBITMAP bitmap;
648          uint16 cache_idx, bufsize;          uint16 cache_idx, bufsize;
649          uint8 cache_id, width, height, bpp;          uint8 cache_id, width, height, bpp, Bpp;
650          uint8 *data, *inverted;          uint8 *data, *inverted;
651          int y;          int y;
652    
# Line 634  process_raw_bmpcache(STREAM s) Line 655  process_raw_bmpcache(STREAM s)
655          in_uint8(s, width);          in_uint8(s, width);
656          in_uint8(s, height);          in_uint8(s, height);
657          in_uint8(s, bpp);          in_uint8(s, bpp);
658            Bpp = (bpp + 7) / 8;
659          in_uint16_le(s, bufsize);          in_uint16_le(s, bufsize);
660          in_uint16_le(s, cache_idx);          in_uint16_le(s, cache_idx);
661          in_uint8p(s, data, bufsize);          in_uint8p(s, data, bufsize);
662    
663          DEBUG(("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n", width, height, cache_id, cache_idx));
664                 width, height, cache_id, cache_idx));          inverted = (uint8 *) xmalloc(width * height * Bpp);
         inverted = xmalloc(width * height);  
665          for (y = 0; y < height; y++)          for (y = 0; y < height; y++)
666          {          {
667                  memcpy(&inverted[(height - y - 1) * width], &data[y * width],                  memcpy(&inverted[(height - y - 1) * (width * Bpp)], &data[y * (width * Bpp)],
668                         width);                         width * Bpp);
669          }          }
670    
671          bitmap = ui_create_bitmap(width, height, inverted);          bitmap = ui_create_bitmap(width, height, inverted);
# Line 658  process_bmpcache(STREAM s) Line 679  process_bmpcache(STREAM s)
679  {  {
680          HBITMAP bitmap;          HBITMAP bitmap;
681          uint16 cache_idx, size;          uint16 cache_idx, size;
682          uint8 cache_id, width, height, bpp;          uint8 cache_id, width, height, bpp, Bpp;
683          uint8 *data, *bmpdata;          uint8 *data, *bmpdata;
684            uint16 bufsize, pad2, row_size, final_size;
685            uint8 pad1;
686    
687            pad2 = row_size = final_size = 0xffff;  /* Shut the compiler up */
688    
689          in_uint8(s, cache_id);          in_uint8(s, cache_id);
690          in_uint8s(s, 1);        /* pad */          in_uint8(s, pad1);      /* pad */
691          in_uint8(s, width);          in_uint8(s, width);
692          in_uint8(s, height);          in_uint8(s, height);
693          in_uint8(s, bpp);          in_uint8(s, bpp);
694          in_uint8s(s, 2);        /* bufsize */          Bpp = (bpp + 7) / 8;
695            in_uint16_le(s, bufsize);       /* bufsize */
696          in_uint16_le(s, cache_idx);          in_uint16_le(s, cache_idx);
697          in_uint8s(s, 2);        /* pad */  
698          in_uint16_le(s, size);          if (!g_use_rdp5)
699          in_uint8s(s, 4);        /* row_size, final_size */          {
700    
701                    /* Begin compressedBitmapData */
702                    in_uint16_le(s, pad2);  /* pad */
703                    in_uint16_le(s, size);
704                    /*      in_uint8s(s, 4);  *//* row_size, final_size */
705                    in_uint16_le(s, row_size);
706                    in_uint16_le(s, final_size);
707    
708            }
709            else
710            {
711                    size = bufsize;
712            }
713          in_uint8p(s, data, size);          in_uint8p(s, data, size);
714    
715          DEBUG(("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d,bpp=%d,size=%d,pad1=%d,bufsize=%d,pad2=%d,rs=%d,fs=%d)\n", width, height, cache_id, cache_idx, bpp, size, pad1, bufsize, pad2, row_size, final_size));
                width, height, cache_id, cache_idx));  
716    
717          bmpdata = xmalloc(width * height);          bmpdata = (uint8 *) xmalloc(width * height * Bpp);
718    
719          if (bitmap_decompress(bmpdata, width, height, data, size))          if (bitmap_decompress(bmpdata, width, height, data, size, Bpp))
720          {          {
721                  bitmap = ui_create_bitmap(width, height, bmpdata);                  bitmap = ui_create_bitmap(width, height, bmpdata);
722                  cache_put_bitmap(cache_id, cache_idx, bitmap);                  cache_put_bitmap(cache_id, cache_idx, bitmap);
723          }          }
724            else
725            {
726                    DEBUG(("Failed to decompress bitmap data\n"));
727            }
728    
729          xfree(bmpdata);          xfree(bmpdata);
730  }  }
# Line 700  process_colcache(STREAM s) Line 742  process_colcache(STREAM s)
742          in_uint8(s, cache_id);          in_uint8(s, cache_id);
743          in_uint16_le(s, map.ncolours);          in_uint16_le(s, map.ncolours);
744    
745          map.colours = xmalloc(3 * map.ncolours);          map.colours = (COLOURENTRY *) xmalloc(sizeof(COLOURENTRY) * map.ncolours);
746    
747          for (i = 0; i < map.ncolours; i++)          for (i = 0; i < map.ncolours; i++)
748          {          {
# Line 746  process_fontcache(STREAM s) Line 788  process_fontcache(STREAM s)
788                  in_uint8p(s, data, datasize);                  in_uint8p(s, data, datasize);
789    
790                  bitmap = ui_create_glyph(width, height, data);                  bitmap = ui_create_glyph(width, height, data);
791                  cache_put_font(font, character, offset, baseline,                  cache_put_font(font, character, offset, baseline, width, height, bitmap);
                                width, height, bitmap);  
792          }          }
793  }  }
794    
# Line 792  process_secondary_order(STREAM s) Line 833  process_secondary_order(STREAM s)
833    
834  /* Process an order PDU */  /* Process an order PDU */
835  void  void
836  process_orders(STREAM s)  process_orders(STREAM s, uint16 num_orders)
837  {  {
838          RDP_ORDER_STATE *os = &order_state;          RDP_ORDER_STATE *os = &g_order_state;
839          uint32 present;          uint32 present;
         uint16 num_orders;  
840          uint8 order_flags;          uint8 order_flags;
841          int size, processed = 0;          int size, processed = 0;
842          BOOL delta;          BOOL delta;
843    
         in_uint8s(s, 2);        /* pad */  
         in_uint16_le(s, num_orders);  
         in_uint8s(s, 2);        /* pad */  
   
844          while (processed < num_orders)          while (processed < num_orders)
845          {          {
846                  in_uint8(s, order_flags);                  in_uint8(s, order_flags);
# Line 854  process_orders(STREAM s) Line 890  process_orders(STREAM s)
890                                              os->bounds.top,                                              os->bounds.top,
891                                              os->bounds.right -                                              os->bounds.right -
892                                              os->bounds.left + 1,                                              os->bounds.left + 1,
893                                              os->bounds.bottom -                                              os->bounds.bottom - os->bounds.top + 1);
                                             os->bounds.top + 1);  
894                          }                          }
895    
896                          delta = order_flags & RDP_ORDER_DELTA;                          delta = order_flags & RDP_ORDER_DELTA;
# Line 863  process_orders(STREAM s) Line 898  process_orders(STREAM s)
898                          switch (os->order_type)                          switch (os->order_type)
899                          {                          {
900                                  case RDP_ORDER_DESTBLT:                                  case RDP_ORDER_DESTBLT:
901                                          process_destblt(s, &os->destblt,                                          process_destblt(s, &os->destblt, present, delta);
                                                         present, delta);  
902                                          break;                                          break;
903    
904                                  case RDP_ORDER_PATBLT:                                  case RDP_ORDER_PATBLT:
905                                          process_patblt(s, &os->patblt,                                          process_patblt(s, &os->patblt, present, delta);
                                                        present, delta);  
906                                          break;                                          break;
907    
908                                  case RDP_ORDER_SCREENBLT:                                  case RDP_ORDER_SCREENBLT:
909                                          process_screenblt(s, &os->screenblt,                                          process_screenblt(s, &os->screenblt, present, delta);
                                                           present, delta);  
910                                          break;                                          break;
911    
912                                  case RDP_ORDER_LINE:                                  case RDP_ORDER_LINE:
913                                          process_line(s, &os->line,                                          process_line(s, &os->line, present, delta);
                                                      present, delta);  
914                                          break;                                          break;
915    
916                                  case RDP_ORDER_RECT:                                  case RDP_ORDER_RECT:
917                                          process_rect(s, &os->rect,                                          process_rect(s, &os->rect, present, delta);
                                                      present, delta);  
918                                          break;                                          break;
919    
920                                  case RDP_ORDER_DESKSAVE:                                  case RDP_ORDER_DESKSAVE:
921                                          process_desksave(s, &os->desksave,                                          process_desksave(s, &os->desksave, present, delta);
                                                          present, delta);  
922                                          break;                                          break;
923    
924                                  case RDP_ORDER_MEMBLT:                                  case RDP_ORDER_MEMBLT:
925                                          process_memblt(s, &os->memblt,                                          process_memblt(s, &os->memblt, present, delta);
                                                        present, delta);  
926                                          break;                                          break;
927    
928                                  case RDP_ORDER_TRIBLT:                                  case RDP_ORDER_TRIBLT:
929                                          process_triblt(s, &os->triblt,                                          process_triblt(s, &os->triblt, present, delta);
                                                        present, delta);  
930                                          break;                                          break;
931    
932                                  case RDP_ORDER_POLYLINE:                                  case RDP_ORDER_POLYLINE:
933                                          process_polyline(s, &os->polyline,                                          process_polyline(s, &os->polyline, present, delta);
                                                          present, delta);  
934                                          break;                                          break;
935    
936                                  case RDP_ORDER_TEXT2:                                  case RDP_ORDER_TEXT2:
937                                          process_text2(s, &os->text2,                                          process_text2(s, &os->text2, present, delta);
                                                       present, delta);  
938                                          break;                                          break;
939    
940                                  default:                                  default:
# Line 923  process_orders(STREAM s) Line 948  process_orders(STREAM s)
948    
949                  processed++;                  processed++;
950          }          }
951    #if 0
952            /* not true when RDP_COMPRESSION is set */
953            if (s->p != g_next_packet)
954                    error("%d bytes remaining\n", (int) (g_next_packet - s->p));
955    #endif
956    
         if (s->p != next_packet)  
                 error("%d bytes remaining\n", (int) (next_packet - s->p));  
957  }  }
958    
959  /* Reset order state */  /* Reset order state */
960  void  void
961  reset_order_state()  reset_order_state(void)
962  {  {
963          memset(&order_state, 0, sizeof(order_state));          memset(&g_order_state, 0, sizeof(g_order_state));
964          order_state.order_type = RDP_ORDER_PATBLT;          g_order_state.order_type = RDP_ORDER_PATBLT;
965  }  }

Legend:
Removed from v.64  
changed lines
  Added in v.683

  ViewVC Help
Powered by ViewVC 1.1.26