cURL cURL > Mailing List > Monthly Index > Single Mail

curl-tracker Archives

[curl:feature-requests] #82 Adding Windows Phone (Metro) support

From: Stefan Neis <neis_at_users.sf.net>
Date: Thu, 13 Nov 2014 13:23:05 +0000

Hi Steve,

Looks good to me, although, generally speaking I'm a big fan of using just one API in the code and if necessary, define platform specific "replacements" at the beginning of the file or in an include or some other appropriate place, rather than using #ifdef's ll over the code. With just one occurence of those APIs however, this is only a matter of personal preferences, anyway
[i.e., personally, instead of writing
  #if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \
    (_WIN32_WINNT < _WIN32_WINNT_VISTA)
   int ret = (WaitForSingleObject(*hnd, INFINITE) == WAIT_OBJECT_0);
  #else
   int ret = (WaitForSingleObjectEx(*hnd, INFINITE, FALSE) == WAIT_OBJECT_0);
  #endif
 I'd just write
  int ret = (WaitForSingleObjectEx(*hnd, INFINITE, FALSE) == WAIT_OBJECT_0);
 and then find some suitable place to add
  #if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \
    (_WIN32_WINNT < _WIN32_WINNT_VISTA)
  #define WaitForSingleObjectEx(a,b,c) WaitForSingleObject(a,b)
  #endif
 or even vice versa, use WaitForSingelObject in the code and define it
 to WaitForSingleObjectEx for Windows version that are "too new".
]
Anyway, coming back to my original post, this is more or less cosmetic, the interesting question (IMO) is, what to do about the threading stuff...

---
** [feature-requests:#82] Adding Windows Phone (Metro) support**
**Status:** open
**Created:** Tue Nov 11, 2014 10:03 AM UTC by Stefan Neis
**Last Updated:** Wed Nov 12, 2014 11:34 PM UTC
**Owner:** Daniel Stenberg
I've been testing curl on Windows Phone a bit, using the Metro app style (i.e. non-Silverlight). Of course, that required some changes to curl code.
A first step was to replace some (more precisely: three) old APIs that are not supported for Windows Phone by more "modern", extended APIs (patch attached). Unless you need to support very old compilers or windows versions (which would required some #ifdefs), that should be an uncontroversial change.
A second, more controversial step was to add a "thread emulation" layer and include it from connect.c and select.c via a suitable #ifdef. IIRC, I took that from http://blogs.msdn.com/b/shawnhar/archive/2012/03/12/createthread-for-windows-8-metro.aspx. This "translates" the win32 thread API used by cURL to the new Metro-style thread pool API. While that was fine for my own use, I doubt it's a generally acceptable method for porting libraries, especially, if each library adds its own copy of that code. So I don't really know what to suggest here. 
---
Sent from sourceforge.net because curl-tracker@cool.haxx.se is subscribed to https://sourceforge.net/p/curl/feature-requests/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/curl/admin/feature-requests/options.  Or, if this is a mailing list, you can unsubscribe from the mailing list.
Received on 2014-11-13

These mail archives are generated by hypermail.