freerdp: merge with master
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Fri, 28 Jun 2013 16:50:24 +0000 (12:50 -0400)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Fri, 28 Jun 2013 16:50:24 +0000 (12:50 -0400)
1  2 
CMakeLists.txt
client/X11/xf_graphics.c
client/common/cmdline.c
libfreerdp/common/settings.c
libfreerdp/core/freerdp.c
libfreerdp/core/update.c
libfreerdp/locale/keyboard_xkbfile.c
server/Sample/sfreerdp.c
winpr/libwinpr/handle/handle.h

diff --cc CMakeLists.txt
index edd2e0a,62dc88e..445e81f
mode 100755,100644..100755
@@@ -127,11 -128,13 +127,11 @@@ void xf_Bitmap_Decompress(rdpContext* c
        BYTE* dst;
        int yindex;
        int xindex;
 -      xfInfo* xfi;
        BOOL status;
        RFX_MESSAGE* msg;
 -
 -      xfi = ((xfContext*) context)->xfi;
 +      xfContext* xfc = (xfContext*) context;
  
-       size = width * height * (bpp + 7) / 8;
+       size = width * height * ((bpp + 7) / 8);
  
        if (bitmap->data == NULL)
                bitmap->data = (BYTE*) malloc(size);
Simple merge
@@@ -1204,61 -1185,12 +1204,61 @@@ int freerdp_set_param_bool(rdpSettings
  
        // Mark field as modified
        settings->settings_modified[id] = 1;
 -      if (settings->instance)
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
++      PubSub_OnParamChange(context->pubSub, context, &e);
 +
 +      return -1;
 +}
 +
 +int freerdp_get_param_int(rdpSettings* settings, int id)
 +{
 +      switch (id)
        {
 -              IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
 +              case FreeRDP_XPan:
 +                      return settings->XPan;
 +                      break;
 +
 +              case FreeRDP_YPan:
 +                      return settings->YPan;
 +                      break;
 +
 +              default:
 +                      return 0;
 +                      break;
        }
  
 -      return -1;
 +      return 0;
 +}
 +
 +int freerdp_set_param_int(rdpSettings* settings, int id, int param)
 +{
 +      ParamChangeEventArgs e;
 +      rdpContext* context = ((freerdp*) settings->instance)->context;
 +
 +      switch (id)
 +      {
 +              case FreeRDP_XPan:
 +                      settings->XPan = param;
 +                      break;
 +
 +              case FreeRDP_YPan:
 +                      settings->YPan = param;
 +                      break;
 +
 +              default:
 +                      return -1;
 +                      break;
 +      }
 +
 +      settings->settings_modified[id] = 1;
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
++      PubSub_OnParamChange(context->pubSub, context, &e);
 +
 +      return 0;
  }
  
  UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id)
@@@ -1895,10 -1824,10 +1895,10 @@@ int freerdp_set_param_uint32(rdpSetting
  
        // Mark field as modified
        settings->settings_modified[id] = 1;
 -      if (settings->instance)
 -      {
 -              IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
 -      }
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
++      PubSub_OnParamChange(context->pubSub, context, &e);
        
        return 0;
  }
@@@ -1937,10 -1863,10 +1937,10 @@@ int freerdp_set_param_uint64(rdpSetting
  
        // Mark field as modified
        settings->settings_modified[id] = 1;
 -      if (settings->instance)
 -      {
 -              IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
 -      }
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
++      PubSub_OnParamChange(context->pubSub, context, &e);
        
        return 0;
  }
@@@ -2275,51 -2198,10 +2275,51 @@@ int freerdp_set_param_string(rdpSetting
  
        // Mark field as modified
        settings->settings_modified[id] = 1;
 -      if (settings->instance)
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
++      PubSub_OnParamChange(context->pubSub, context, &e);
 +
 +      return 0;
 +}
 +
 +double freerdp_get_param_double(rdpSettings* settings, int id)
 +{
 +      switch (id)
        {
 -              IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
 +              case FreeRDP_ScalingFactor:
 +                      return settings->ScalingFactor;
 +                      break;
 +
 +              default:
 +                      return 0;
 +                      break;
 +      }
 +
 +      return 0;
 +}
 +
 +int freerdp_set_param_double(rdpSettings* settings, int id, double param)
 +{
 +      ParamChangeEventArgs e;
 +      rdpContext* context = ((freerdp*) settings->instance)->context;
 +
 +      switch (id)
 +      {
 +              case FreeRDP_ScalingFactor:
 +                      settings->ScalingFactor = param;
 +                      break;
 +
 +              default:
 +                      return -1;
 +                      break;
        }
  
-       PubSub_OnParamChange(context->pubSub, context->instance, &e);
 +      settings->settings_modified[id] = 1;
 +
 +      EventArgsInit(&e, "freerdp");
 +      e.id = id;
++      PubSub_OnParamChange(context->pubSub, context, &e);
 +
        return 0;
  }
@@@ -394,9 -373,13 +397,12 @@@ void freerdp_context_free(freerdp* inst
        IFCALL(instance->ContextFree, instance, instance->context);
  
        rdp_free(instance->context->rdp);
+       instance->context->rdp = NULL;
        graphics_free(instance->context->graphics);
+       instance->context->graphics = NULL;
  
 -      free(instance->context->client);
 -      instance->context->client = NULL;
 +      PubSub_Free(instance->context->pubSub);
  
        free(instance->context);
        instance->context = NULL;
@@@ -731,8 -693,7 +734,10 @@@ static void update_send_surface_bits(rd
        update_write_surfcmd_surface_bits_header(s, surface_bits_command);
        Stream_Write(s, surface_bits_command->bitmapData, surface_bits_command->bitmapDataLength);
        fastpath_send_update_pdu(rdp->fastpath, FASTPATH_UPDATETYPE_SURFCMDS, s);
 +
 +      update_force_flush(context);
++
+       Stream_Release(s);
  }
  
  static void update_send_surface_frame_marker(rdpContext* context, SURFACE_FRAME_MARKER* surface_frame_marker)
        s = fastpath_update_pdu_init(rdp->fastpath);
        update_write_surfcmd_frame_marker(s, surface_frame_marker->frameAction, surface_frame_marker->frameId);
        fastpath_send_update_pdu(rdp->fastpath, FASTPATH_UPDATETYPE_SURFCMDS, s);
 +
 +      update_force_flush(context);
++
+       Stream_Release(s);
  }
  
  static void update_send_frame_acknowledge(rdpContext* context, UINT32 frameId)
@@@ -154,6 -154,6 +154,7 @@@ XKB_KEY_NAME_SCANCODE XKB_KEY_NAME_SCAN
        { "LWIN",       RDP_SCANCODE_LWIN},
        { "RWIN",       RDP_SCANCODE_RWIN},
        { "COMP",       RDP_SCANCODE_APPS},
++      { "MENU",       RDP_SCANCODE_APPS}, // WinMenu in xfree86 layout
        { "KPDV",       RDP_SCANCODE_DIVIDE}, // KP!
        { "RCTL",       RDP_SCANCODE_RCONTROL},
        { "RALT",       RDP_SCANCODE_RMENU},
Simple merge
Simple merge