wfreerdp-server: merged upstream
authorCorey C <can.of.tuna@gmail.com>
Thu, 11 Oct 2012 21:14:55 +0000 (17:14 -0400)
committerCorey C <can.of.tuna@gmail.com>
Thu, 11 Oct 2012 21:14:55 +0000 (17:14 -0400)
1  2 
include/freerdp/peer.h
server/Windows/CMakeLists.txt
server/Windows/wf_info.c
server/Windows/wf_info.h
server/Windows/wf_input.c
server/Windows/wf_input.h
server/Windows/wf_interface.c
server/Windows/wf_interface.h
server/Windows/wf_peer.c
server/Windows/wf_update.c

@@@ -72,12 -72,11 +72,12 @@@ struct rdp_freerdp_pee
        psPeerSendChannelData SendChannelData;
        psPeerReceiveChannelData ReceiveChannelData;
  
-       uint32 ack_frame_id;
-       boolean local;
-       boolean connected;
-       boolean activated;
-       boolean authenticated;
 +      int pId;
+       UINT32 ack_frame_id;
+       BOOL local;
+       BOOL connected;
+       BOOL activated;
+       BOOL authenticated;
        SEC_WINNT_AUTH_IDENTITY identity;
  };
  
@@@ -51,7 -53,9 +53,10 @@@ if(WITH_WIN8
        set(${MODULE_PREFIX}_LIBS d3d11 dxgi dxguid)\r
  endif()\r
  \r
- if(WITH_MONOLITHIC_BUILD)
++
+ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-channels-server)\r
\r
+ if(MONOLITHIC_BUILD)\r
        set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp)\r
  else()
  \r
Simple merge
Simple merge
Simple merge
  
  #include "wf_interface.h"
  
- void wf_peer_keyboard_event(rdpInput* input, uint16 flags, uint16 code);
- void wf_peer_unicode_keyboard_event(rdpInput* input, uint16 flags, uint16 code);
- void wf_peer_mouse_event(rdpInput* input, uint16 flags, uint16 x, uint16 y);
- void wf_peer_extended_mouse_event(rdpInput* input, uint16 flags, uint16 x, uint16 y);
+ void wf_peer_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code);
+ void wf_peer_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code);
+ void wf_peer_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
+ void wf_peer_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y);
  
 +//dummy versions
 +void wf_peer_keyboard_event_dummy(rdpInput* input, uint16 flags, uint16 code);
 +void wf_peer_unicode_keyboard_event_dummy(rdpInput* input, uint16 flags, uint16 code);
 +void wf_peer_mouse_event_dummy(rdpInput* input, uint16 flags, uint16 x, uint16 y);
 +void wf_peer_extended_mouse_event_dummy(rdpInput* input, uint16 flags, uint16 x, uint16 y);
 +
  #endif /* WF_INPUT_H */
@@@ -26,8 -24,6 +26,7 @@@
  #include <winpr/tchar.h>
  #include <winpr/windows.h>
  #include <freerdp/utils/tcp.h>
- //#include <libfreerdp\core\listener.h>
 +#include <freerdp\listener.h>
  
  #include "wf_peer.h"
  #include "wf_settings.h"
@@@ -79,10 -68,9 +78,10 @@@ DWORD WINAPI wf_server_main_loop(LPVOI
                if (max_fds == 0)
                        break;
  
 +              
                select(max_fds + 1, &rfds_set, NULL, NULL, NULL);
-               
-               if (instance->CheckFileDescriptor(instance) != true)
+               if (instance->CheckFileDescriptor(instance) != TRUE)
                {
                        printf("Failed to check FreeRDP file descriptor\n");
                        break;
  
  #include <freerdp/freerdp.h>
  #include <freerdp/codec/rfx.h>
+ #include <freerdp/server/rdpsnd.h>
  
 +#define WF_SRV_CALLBACK_EVENT_CONNECT 1
 +#define WF_SRV_CALLBACK_EVENT_DISCONNECT 2
 +#define WF_SRV_CALLBACK_EVENT_ACTIVATE 4
 +#define WF_SRV_CALLBACK_EVENT_AUTH 8
 +
  typedef struct wf_info wfInfo;
  typedef struct wf_peer_context wfPeerContext;
  
@@@ -100,22 -93,4 +104,17 @@@ FREERDP_API BOOL wfreerdp_server_stop(w
  FREERDP_API wfServer* wfreerdp_server_new();
  FREERDP_API void wfreerdp_server_free(wfServer* server);
  
- //FREERDP_API void wfreerdp_server_register_connect_event(cbConEvent cb);
- //FREERDP_API void wfreerdp_server_register_disconnect_event(cbConEvent cb);
 +FREERDP_API BOOL wfreerdp_server_is_running(wfServer* server);
 +
 +FREERDP_API UINT32 wfreerdp_server_num_peers();
 +FREERDP_API UINT32 wfreerdp_server_get_peer_hostname(int pId, wchar_t * dstStr);
 +FREERDP_API BOOL wfreerdp_server_peer_is_local(int pId);
 +FREERDP_API BOOL wfreerdp_server_peer_is_connected(int pId);
 +FREERDP_API BOOL wfreerdp_server_peer_is_activated(int pId);
 +FREERDP_API BOOL wfreerdp_server_peer_is_authenticated(int pId);
 +
- //void wfreerdp_server_peer_connect_event(int pId);
- //void wfreerdp_server_peer_disconnect_event(int pId);
 +FREERDP_API void wfreerdp_server_register_callback_event(cbCallback cb);
 +
 +void wfreerdp_server_peer_callback_event(int pId, UINT32 eType);
 +
  #endif /* WF_INTERFACE_H */
@@@ -97,15 -115,13 +116,15 @@@ BOOL wf_peer_activate(freerdp_peer* cli
        printf("PeerActivate\n");\r
  \r
        wfi = context->info;\r
-       client->activated = true;\r
+       client->activated = TRUE;\r
        wf_update_peer_activate(wfi, context);\r
  \r
-       return true;\r
 +      wfreerdp_server_peer_callback_event(((rdpContext*) context)->peer->pId, WF_SRV_CALLBACK_EVENT_ACTIVATE);\r
 +\r
+       return TRUE;\r
  }\r
  \r
boolean wf_peer_logon(freerdp_peer* client, SEC_WINNT_AUTH_IDENTITY* identity, boolean automatic)\r
BOOL wf_peer_logon(freerdp_peer* client, SEC_WINNT_AUTH_IDENTITY* identity, BOOL automatic)\r
  {\r
        printf("PeerLogon\n");\r
  \r
                        identity->User, identity->Domain, identity->Password);\r
        }\r
  \r
-       return true;\r
 +\r
 +      wfreerdp_server_peer_callback_event(((rdpContext*) client->context)->peer->pId, WF_SRV_CALLBACK_EVENT_AUTH);\r
+       return TRUE;\r
  }\r
  \r
- void wf_peer_synchronize_event(rdpInput* input, uint32 flags)\r
+ void wf_peer_synchronize_event(rdpInput* input, UINT32 flags)\r
  {\r
  \r
  }\r
@@@ -287,12 -288,9 +306,16 @@@ DWORD WINAPI wf_peer_main_loop(LPVOID l
                                break;\r
                }\r
  \r
 +              //force disconnect\r
 +              if(wfi->force_all_disconnect == TRUE)\r
 +              {\r
 +                      printf("Forcing Disconnect -> ");\r
 +                      break;\r
 +              }\r
++\r
+               /* FIXME: we should wait on this, instead of calling it every time */\r
+               if (WTSVirtualChannelManagerCheckFileDescriptor(context->vcm) != TRUE)\r
+                       break;\r
        }\r
  \r
        printf("Client %s disconnected.\n", client->local ? "(local)" : client->hostname);\r
@@@ -110,12 -104,12 +110,12 @@@ DWORD WINAPI wf_update_thread(LPVOID lp
  
  void wf_update_encode(wfInfo* wfi)
  {
 -      
 +
        RFX_RECT rect;
        long height, width;
-       uint8* pDataBits = NULL;
+       BYTE* pDataBits = NULL;
        int stride;
 -      
 +
        SURFACE_BITS_COMMAND* cmd;
  
        wf_info_find_invalid_region(wfi);
  
        //printf("x:%d y:%d w:%d h:%d\n", wfi->invalid.left, wfi->invalid.top, width, height);
  
+       stream_clear(wfi->s);
        rfx_compose_message(wfi->rfx_context, wfi->s, &rect, 1,
 -                      pDataBits, width, height, stride);
 +              pDataBits, width, height, stride);
  
        wfi->frame_idx = wfi->rfx_context->frame_idx;