[RFC] Use ICU in wine ?

2011-10-10 Thread Rafał Mużyło
Right now, wine claims to use DUCET data for lingustic sorting, but by
section 1.9.2 of that document (as of version 6.0.0), uses it in a wrong
way. The result of it are bugs such as #10767 and #9583.

A possible way around it would beby using ICU to get language specific
tailoring and applying some of wine-specific for the parts addressed by
#10767. In a way, wine already *indirectly* depends on icu on many
distros (a potential libxml2 dep) - they were quite a few patches
already addressing build failures caused by this in recent past.

I've cooked up a patch, that's unfortunately isn't working properly yet,
it's more of a draft on where to go, if such road were to be taken.

Main issue with this patch ain't it's not ignoring the proper list of
symbols, as this would be easy to fix, if not for one problem:
the part that I put inside 'if (0)' block.

For some reason (threading, perhaps ?), if I pass a non-zero lenght string
to ucol_openRules, wineboot hangs. Oddly, if the string lenght is 0, the
hang doesn't happen.
I can't really tell, what going wrong, as the almost same code works in
native linux testcase.

Also, while in this patch UCOL_ALTERNATE_HANDLING would have been used
for NORM_IGNORESYMBOLS, it would be much better to manipulate some of
the settings by a custom rule and VariableTop value, but to do that,
first such rule would have to be passed and that odd hang prevents it
at the moment.

It would also be nice, if it was possible to initialize the collator
only once for an app instance - after all, in Windows locale change
requires a reboot, so while (AFAIK) one wineserver instance can have
apps in different locales running, locale can't change for an already
running app.

So if you have any idea of why exactly the hang happens and how to get
around it or know any *technical* reasons of why ICU couldn't be used in
wine, CC me with comments.

--- libs/wine/sortkey.c 2011-10-05 16:44:29.0 +0200
+++ libs/wine/sortkey.c 2011-10-05 21:06:51.0 +0200
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 #include wine/unicode.h
+#include unicode/ustring.h
+#include unicode/ucol.h
 
 extern int get_decomposition(WCHAR src, WCHAR *dst, unsigned int dstlen);
 extern const unsigned int collation_table[];
@@ -334,10 +336,56 @@
 const WCHAR *str2, int len2)
 {
 int ret;
+UErrorCode status = U_ZERO_ERROR;// status1 = U_ZERO_ERROR;
+UCollator *coll, *coll2;
+UParseError parse_error;
+//U_STRING_DECL(word_sort_rule, \\u=''='-', 18);
+//U_STRING_INIT(word_sort_rule, \\u=''='-', 18);
+const WCHAR word_sort_rule[] = { '', '\\', 'u', '0', '0',
+'0', '0', '=', '\'', '\'', '=', '\'', '-', '\'', 0};
 
 len1 = real_length(str1, len1);
 len2 = real_length(str2, len2);
 
+coll = ucol_open(NULL, status);
+if (U_SUCCESS(status))
+{
+if (0  !(flags  SORT_STRINGSORT))
+{
+coll2 = ucol_openRules(word_sort_rule, 14,
+ucol_getAttribute(coll, UCOL_NORMALIZATION_MODE, status),
+ucol_getStrength(coll), parse_error, status);
+if (U_SUCCESS(status))
+{
+ucol_close(coll);
+coll = coll2;
+}
+}
+if (flags  NORM_IGNORECASE)
+ucol_setStrength(coll, UCOL_SECONDARY);
+if (flags  NORM_IGNORENONSPACE)
+{
+ucol_setStrength(coll, UCOL_PRIMARY);
+if (!(flags  NORM_IGNORECASE))
+ucol_setAttribute(coll, UCOL_CASE_LEVEL, UCOL_ON, status);
+}
+if (flags  NORM_IGNOREKANATYPE)
+{
+if (ucol_getAttribute(coll, UCOL_HIRAGANA_QUATERNARY_MODE, status)
+ == UCOL_ON)
+ ucol_setAttribute(coll, UCOL_HIRAGANA_QUATERNARY_MODE, 
UCOL_OFF, status);
+}
+if (flags  NORM_IGNORESYMBOLS)
+{
+ucol_setAttribute(coll, UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, 
status);
+}
+
+ret = ucol_strcoll(coll, str1, len1, str2, len2) + 2;
+ucol_close(coll);
+}
+else
+ret = 0;
+#if 0
 ret = compare_unicode_weights(flags, str1, len1, str2, len2);
 if (!ret)
 {
@@ -346,5 +385,6 @@
 if (!ret  !(flags  NORM_IGNORECASE))
 ret = compare_case_weights(flags, str1, len1, str2, len2);
 }
+#endif
 return ret;
 }
--- configure.ac2011-10-04 21:46:40.0 +0200
+++ configure.ac2011-10-05 21:35:57.0 +0200
@@ -913,6 +913,29 @@
 WINE_ERROR_WITH(pthread,[test x$LIBPTHREAD = x],[pthread 
${notice_platform}development files not found.
 Wine cannot support threads without libpthread.])
 
+dnl  Check for icu 
+
+AC_SUBST(ICUINCL,)
+AC_SUBST(ICULIBS,)
+ac_save_CPPFLAGS=$CPPFLAGS
+if test $PKG_CONFIG != false
+then
+ac_icu_libs=`$PKG_CONFIG --libs icu-i18n 2/dev/null`
+ac_icu_cflags=`$PKG_CONFIG --cflags icu-i18n 2/dev/null`
+ 

Re: [ 3/3] ddraw: Keep track of interface attached by AddAttachedSurface and detach correct interface when parent is released.

2011-10-10 Thread Henri Verbeet
On 10 October 2011 08:07, Octavian Voicu octavian.vo...@gmail.com wrote:
 +static HRESULT delete_attached_surface_helper(IDirectDrawSurfaceImpl *root, 
 IDirectDrawSurfaceImpl *detach)
 +{
 +    if (detach-attached_iface == detach-IDirectDrawSurface4_iface)
 +        return 
 IDirectDrawSurface4_DeleteAttachedSurface(root-IDirectDrawSurface4_iface, 0,
 +                                                         
 detach-IDirectDrawSurface4_iface);
 +    else if (detach-attached_iface == detach-IDirectDrawSurface3_iface)
 +        return 
 IDirectDrawSurface3_DeleteAttachedSurface(root-IDirectDrawSurface3_iface, 0,
 +                                                         
 detach-IDirectDrawSurface3_iface);
 +    else if (detach-attached_iface == detach-IDirectDrawSurface2_iface)
 +        return 
 IDirectDrawSurface2_DeleteAttachedSurface(root-IDirectDrawSurface2_iface, 0,
 +                                                         
 detach-IDirectDrawSurface2_iface);
 +    else if (detach-attached_iface == detach-IDirectDrawSurface_iface)
 +        return 
 IDirectDrawSurface_DeleteAttachedSurface(root-IDirectDrawSurface_iface, 0,
 +                                                        
 detach-IDirectDrawSurface_iface);
 +    else if (detach-attached_iface != detach-IDirectDrawSurface7_iface)
 +        FIXME(attached_iface %p is invalid for surface %p\n, 
 detach-attached_iface, detach);
 +
 +    return 
 IDirectDrawSurface7_DeleteAttachedSurface(root-IDirectDrawSurface7_iface, 0,
 +                                                     
 detach-IDirectDrawSurface7_iface);
 +}
 +
Can't you just handle this in ddraw_surface_delete_attached_surface()?
I.e., replace the Release calls in
ddraw_surface?_DeleteAttachedSurface() with a
IUnknown_Release(Surf-attached_iface) in
ddraw_surface_delete_attached_surface(), and then just call
ddraw_surface_delete_attached_surface() where you're using
delete_attached_surface_helper() now.




Re: [RFC] Use ICU in wine ?

2011-10-10 Thread Dmitry Timoshkov
Rafał Mużyło galtge...@o2.pl wrote:

 Right now, wine claims to use DUCET data for lingustic sorting,

What's DUCET and where do you see Wine does claim to use it?

 but by
 section 1.9.2 of that document (as of version 6.0.0), uses it in a wrong
 way.

Could you please be slightly more specific?

 The result of it are bugs such as #10767 and #9583.

Looks like that you don't understand what those bugs are about.

 A possible way around it would beby using ICU to get language specific
 tailoring and applying some of wine-specific for the parts addressed by
 #10767.

Once you uderstand the problems you may see that adding ICU to Wine
depencies will create much more problems than it's supposedly will
solve.

-- 
Dmitry.




Re: [1/5] d3d8: Never announce support for palettized textures

2011-10-10 Thread Henri Verbeet
On 9 October 2011 17:31, Stefan Dösinger ste...@codeweavers.com wrote:
   - I can't say I find e.g. sprinkling d3dformat_is_palettized() over
 the code particularly elegant.
 I suppose I could check for it in IDirect3DDevice8Impl_CreateSurface(and the
 d3d9 equivalent), if all calls that create surfaces run through it.

   - Do you have tests for the D3DERR_INVALIDCALL returns?
 I tested that and Windows returns D3D_OK. Windows also allows creating P8
 offscreen plain surfaces, and it allows StretchRect operations between those
 surfaces. It doesn't allow StretchRect operations between P8 and non-
 Palettized surfaces. In the end I could not find any way to make use of those
 surfaces I could create.

 I prefer to return INVALIDCALL over the half-baked implementation Windows has
 to find applications that try to use P8 surfaces in a way I may have missed.

It's not really clear to me that refusing to create P8 surfaces in
d3d8/9 really gains us much, or that it's really a prerequisite for
the other patches. If you want to go that way though, you should
probably just map D3DFORMAT_P8 to something that's not
WINED3DFMT_P8_UINT, perhaps WINED3DFMT_UNSUPPORTED, and just let
wined3d fail resource creation.




Re: [ 3/3] ddraw: Keep track of interface attached by AddAttachedSurface and detach correct interface when parent is released.

2011-10-10 Thread Octavian Voicu
On Mon, Oct 10, 2011 at 10:04 AM, Henri Verbeet hverb...@gmail.com wrote:
 Can't you just handle this in ddraw_surface_delete_attached_surface()?
 I.e., replace the Release calls in
 ddraw_surface?_DeleteAttachedSurface() with a
 IUnknown_Release(Surf-attached_iface) in
 ddraw_surface_delete_attached_surface(), and then just call
 ddraw_surface_delete_attached_surface() where you're using
 delete_attached_surface_helper() now.

This is much clever! I'll resend the patches, thanks.

Octavian




Re: [1/5] d3d8: Never announce support for palettized textures

2011-10-10 Thread Stefan Dösinger
On Monday 10 October 2011 10:20:15 Henri Verbeet wrote:
 It's not really clear to me that refusing to create P8 surfaces in
 d3d8/9 really gains us much, or that it's really a prerequisite for
 the other patches.
I guess you've got a point here, if we just allow the surfaces we'll end up 
with the same behavior as windows for probably the same reason - functionality 
for ddraw is exposed via d3d8/9, but because d3d8/9 don't have P8 primaries it 
is useless.

I'll still return D3DERR_INVALIDCALL from the palette setters/getters to 
remove the d3d8/9 palette API from wined3d, which simplifies the code there. We 
could implement them via the ddraw palette API, but without test cases showing 
how they're supposed to work it would be a shot in the dark and most likely 
dead code.


signature.asc
Description: This is a digitally signed message part.



DEVELOPMENTAL: use uniscribe in the edit control

2011-10-10 Thread Aric Stewart
This patch is experimental but people had some interest in testing it 
and I would love some more testing.


What is currently known not to be working:
 * Tabs
 * Font Fallback
 * Complex composed glyphs are not breaking or highlighting properly.

Testing is appreceated. Send me crashes or incorrect behavior.

It should work with both native and builtin usp10.

The patch will be cleaned and broken up before being send it this is 
just for testing.


thanks!

-aric

---
 dlls/user32/edit.c |  495 
+++-

 1 files changed, 256 insertions(+), 239 deletions(-)


diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index da57b97..49b71be 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -98,6 +98,7 @@ typedef struct tagLINEDEF {
 	LINE_END ending;
 	INT width;			/* width of the line in pixels */
 	INT index; 			/* line index into the buffer */
+	SCRIPT_STRING_ANALYSIS ssa; /* Uniscribe Data */
 	struct tagLINEDEF *next;
 } LINEDEF;
 
@@ -158,6 +159,7 @@ typedef struct
 	 * Uniscribe Data
 	 */
 	SCRIPT_LOGATTR *logAttr;
+	SCRIPT_STRING_ANALYSIS ssa; /* Uniscribe Data for single line controls */
 } EDITSTATE;
 
 
@@ -175,6 +177,10 @@ typedef struct
 	} while(0)
 
 static const WCHAR empty_stringW[] = {0};
+static SCRIPT_STRING_ANALYSIS EDIT_UpdateUniscribeData(EDITSTATE *es, HDC dc, int line);
+static SCRIPT_STRING_ANALYSIS EDIT_UpdateUniscribeData_linedef(EDITSTATE *es, HDC dc, LINEDEF *line_def);
+static INT EDIT_EM_LineIndex(const EDITSTATE *es, INT line);
+static LRESULT EDIT_EM_PosFromChar(EDITSTATE *es, INT index, BOOL after_wrap);
 
 /*
  *
@@ -259,7 +265,6 @@ static inline UINT get_text_length(EDITSTATE *es)
 return es-text_length;
 }
 
-
 /*
  *
  *	EDIT_WordBreakProc
@@ -365,6 +370,30 @@ static INT EDIT_CallWordBreakProc(EDITSTATE *es, INT start, INT index, INT count
 	return ret;
 }
 
+static inline void EDIT_InvalidateUniscribeData_linedef(LINEDEF *line_def)
+{
+	if (line_def-ssa)
+	{
+		ScriptStringFree(line_def-ssa);
+		line_def-ssa = NULL;
+	}
+}
+
+static inline void EDIT_InvalidateUniscribeData(EDITSTATE *es)
+{
+	LINEDEF *line_def = es-first_line_def;
+	while (line_def)
+	{
+		EDIT_InvalidateUniscribeData_linedef(line_def);
+		line_def = line_def-next;
+	}
+	if (es-ssa)
+	{
+		ScriptStringFree(es-ssa);
+		es-ssa = NULL;
+	}
+}
+
 /*
  *
  *	EDIT_BuildLineDefs_ML
@@ -392,6 +421,7 @@ static void EDIT_BuildLineDefs_ML(EDITSTATE *es, INT istart, INT iend, INT delta
 		return;
 
 	dc = GetDC(es-hwndSelf);
+
 	if (es-font)
 		old_font = SelectObject(dc, es-font);
 
@@ -439,7 +469,7 @@ static void EDIT_BuildLineDefs_ML(EDITSTATE *es, INT istart, INT iend, INT delta
 			{
 /* The buffer has been expanded, create a new line and
    insert it into the link list */
-LINEDEF *new_line = HeapAlloc(GetProcessHeap(), 0, sizeof(LINEDEF));
+LINEDEF *new_line = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LINEDEF));
 new_line-next = previous_line-next;
 previous_line-next = new_line;
 current_line = new_line;
@@ -489,34 +519,68 @@ static void EDIT_BuildLineDefs_ML(EDITSTATE *es, INT istart, INT iend, INT delta
 			current_line-net_length = cp - current_position;
 		}
 
-		/* Calculate line width */
-		current_line-width = (INT)LOWORD(GetTabbedTextExtentW(dc,
-	current_position, current_line-net_length,
-	es-tabs_count, es-tabs));
+		if (current_line-net_length)
+		{
+			const SIZE *sz;
+			EDIT_InvalidateUniscribeData_linedef(current_line);
+			EDIT_UpdateUniscribeData_linedef(es, dc, current_line);
+			sz = ScriptString_pSize(current_line-ssa);
+			/* Calculate line width */
+			current_line-width = sz-cx;
+		}
+		else current_line-width = 0;
 
 		/* FIXME: check here for lines that are too wide even in AUTOHSCROLL ( 32767 ???) */
+
+/* Line breaks just look back from then end and find the next break and tries that. */
+
 		if (!(es-style  ES_AUTOHSCROLL)) {
 		   if (current_line-width  fw) {
-			INT next = 0;
+
 			INT prev;
+			int w;
+			const SIZE *sz;
+
+ERR(ARIC Start!\n);
+			prev = current_line-net_length - 1;
+			w = current_line-net_length;
 			do {
-prev = next;
-next = EDIT_CallWordBreakProc(es, current_position - es-text,
-		prev + 1, current_line-net_length, WB_RIGHT);
-current_line-width = (INT)LOWORD(GetTabbedTextExtentW(dc,
-			current_position, next, es-tabs_count, es-tabs));
-			} while (current_line-width = fw);
-			if (!prev) { /* Didn't find a line break so force a break */
-next = 0;
+prev = EDIT_CallWordBreakProc(es, current_position - es-text,
+		prev-1, current_line-net_length, WB_LEFT);
+current_line-net_length = prev;
+EDIT_InvalidateUniscribeData_linedef(current_line);
+EDIT_UpdateUniscribeData_linedef(es, dc, current_line);
+sz = 

Re: [PATCH] ntdll: deal with images which override the section table during mapping

2011-10-10 Thread Marcus Meissner
On Mon, Oct 10, 2011 at 11:36:33AM +0200, Bernhard Loos wrote:
 ---
  dlls/ntdll/virtual.c |   38 ++
  1 files changed, 34 insertions(+), 4 deletions(-)

I think this needs tests, the algorithms are very fragile.

Ciao, Marcus

 diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
 index 5e69eb9..7841d9c 100644
 --- a/dlls/ntdll/virtual.c
 +++ b/dlls/ntdll/virtual.c
 @@ -1114,6 +1114,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  IMAGE_DOS_HEADER *dos;
  IMAGE_NT_HEADERS *nt;
  IMAGE_SECTION_HEADER *sec;
 +IMAGE_SECTION_HEADER *section_table = NULL;
  IMAGE_DATA_DIRECTORY *imports;
  NTSTATUS status = STATUS_CONFLICTING_ADDRESSES;
  int i;
 @@ -1123,6 +1124,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  struct file_view *view = NULL;
  char *ptr, *header_end;
  INT_PTR delta = 0;
 +DWORD SizeOfHeaders;
  
  /* zero-map the whole range */
  
 @@ -1158,8 +1160,11 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  header_end = ptr + ROUND_SIZE( 0, header_size );
  memset( ptr + header_size, 0, header_end - (ptr + header_size) );
  if ((char *)(nt + 1)  header_end) goto error;
 -sec = 
 (IMAGE_SECTION_HEADER*)((char*)nt-OptionalHeader+nt-FileHeader.SizeOfOptionalHeader);
 -if ((char *)(sec + nt-FileHeader.NumberOfSections)  header_end) goto 
 error;
 +section_table = 
 (IMAGE_SECTION_HEADER*)((char*)nt-OptionalHeader+nt-FileHeader.SizeOfOptionalHeader);
 +/* make sure we mapped enough memory */
 +if ((char *)(section_table + nt-FileHeader.NumberOfSections)  
 header_end) goto error;
 +/* windows is only interested in the size as given by 
 OptionalHeader.SizeOfHeaders */
 +SizeOfHeaders = ROUND_SIZE( 0, nt-OptionalHeader.SizeOfHeaders );
  
  imports = nt-OptionalHeader.DataDirectory + 
 IMAGE_DIRECTORY_ENTRY_IMPORT;
  if (!imports-Size || !imports-VirtualAddress) imports = NULL;
 @@ -1180,7 +1185,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  if (nt-OptionalHeader.FileAlignment != 
 nt-OptionalHeader.SectionAlignment) goto error;
  for (i = 0; i  nt-FileHeader.NumberOfSections; i++)
  {
 -if (sec[i].VirtualAddress != sec[i].PointerToRawData)
 +if (section_table[i].VirtualAddress != 
 section_table[i].PointerToRawData)
  goto error;  /* Windows refuses to load in that case too */
  }
  
 @@ -1192,6 +1197,24 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  goto done;
  }
  
 +if ((char *)(section_table + nt-FileHeader.NumberOfSections)  ptr + 
 SizeOfHeaders)
 +{
 +/* part of the section table is outside of SizeOfHeaders
 + * at this point, it's likely that a section will get mapped over
 + * the section table (Borderlands does this)
 + * Not sure how it works on Windows, but we make a copy of the
 + * table at this point */
 + sec = RtlAllocateHeap( virtual_heap, 0, sizeof(*sec) * 
 nt-FileHeader.NumberOfSections);
 + if (!sec)
 + {
 + status = STATUS_NO_MEMORY;
 + goto error;
 + }
 + memcpy( sec, section_table, sizeof(*sec) * 
 nt-FileHeader.NumberOfSections);
 + section_table = sec;
 + }
 + else
 +sec = section_table;
  
  /* map all the sections */
  
 @@ -1200,6 +1223,9 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  static const SIZE_T sector_align = 0x1ff;
  SIZE_T map_size, file_start, file_size, end;
  
 +if (sec-VirtualAddress  SizeOfHeaders)
 +goto error;
 +
  if (!sec-Misc.VirtualSize)
  map_size = ROUND_SIZE( 0, sec-SizeOfRawData );
  else
 @@ -1329,7 +1355,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  
  VIRTUAL_SetProt( view, ptr, ROUND_SIZE( 0, header_size ), 
 VPROT_COMMITTED | VPROT_READ );
  
 -sec = (IMAGE_SECTION_HEADER*)((char 
 *)nt-OptionalHeader+nt-FileHeader.SizeOfOptionalHeader);
 +sec = section_table;
  for (i = 0; i  nt-FileHeader.NumberOfSections; i++, sec++)
  {
  SIZE_T size;
 @@ -1361,6 +1387,8 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  }
  
   done:
 +if (section_table  (char *)section_table != (char 
 *)nt-OptionalHeader+nt-FileHeader.SizeOfOptionalHeader)
 +RtlFreeHeap( virtual_heap, 0, section_table );
  view-mapping = dup_mapping;
  server_leave_uninterrupted_section( csVirtual, sigset );
  
 @@ -1373,6 +1401,8 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, 
 char *base, SIZE_T total_siz
  
   error:
  if (view) delete_view( view );
 +if (section_table  (char 

Re: mscoree: Implement ICorDebug SetManagedHandler (try 3)

2011-10-10 Thread Vincent Povirk
Should SetManagedHandler really fail if the given object doesn't
support ICorDebugManagedCallback2 ?

You've got a stray whitespace change in RuntimeHost_Destroy.

Otherwise, this looks good to me.

On Mon, Oct 10, 2011 at 5:12 AM, Alistair Leslie-Hughes
leslie_alist...@hotmail.com wrote:
 Hi,

 Only Release the interfaces after we have a valid callback.
 Allow multiple Interfaces per runtime.


 Changelog:
      mscoree: Implement ICorDebug SetManagedHandler


 Best Regards
   Alistair Leslie-Hughes










[RFC] Use ICU in wine ?

2011-10-10 Thread Rafał Mużyło
On Mon, Oct 10, 2011 at 04:16:26PM +0900, Dmitry Timoshkov wrote (and
contradicted himself):
 What's DUCET and where do you see Wine does claim to use it?

DUCET: Default Unicode Collation Element Table
http://bugs.winehq.org/show_bug.cgi?id=10767#c1
  but by
  section 1.9.2 of that document (as of version 6.0.0), uses it in a wrong
  way.

http://www.unicode.org/reports/tr10/#Non-Goals, point 6
...DUCET does not and cannot actually provide linguistically correct
sorting for every language without further tailoring
 Could you please be slightly more specific?
 
 Looks like that you don't understand what those bugs are about.

Is the above link specific enough ?





[RFC] Use ICU in wine ?

2011-10-10 Thread Rafał Mużyło
On Mon, Oct 10, 2011 at 04:16:26PM +0900, Dmitry Timoshkov wrote (and
contradicted himself):
 What's DUCET and where do you see Wine does claim to use it?

DUCET: Default Unicode Collation Element Table
http://bugs.winehq.org/show_bug.cgi?id=10767#c1
  but by
  section 1.9.2 of that document (as of version 6.0.0), uses it in a wrong
  way.

http://www.unicode.org/reports/tr10/#Non-Goals, point 6
...DUCET does not and cannot actually provide linguistically correct
sorting for every language without further tailoring
 Could you please be slightly more specific?
 
 Looks like that you don't understand what those bugs are about.

Is the above link specific enough ?

Anyway, if DUCET and Windows default differ is dumping that default even
allowed ?

Besides, the only proper way to fix bug #9583 is to implement some kind
of language tailoring.





Re: [RFC] Use ICU in wine ?

2011-10-10 Thread Shachar Shemesh
On 10/10/2011 02:48 AM, Rafał Mużyło wrote:
 Right now, wine claims to use DUCET data for lingustic sorting, but by
 section 1.9.2 of that document (as of version 6.0.0), uses it in a wrong
 way. The result of it are bugs such as #10767 and #9583.

 A possible way around it would beby using ICU to get language specific
 tailoring and applying some of wine-specific for the parts addressed by
 #10767.
I will not go into the part of the discussion that has to do with
whether ICU will or will not resolve the issues. I will point out that
Wine used to have a soft dependency on ICU (introduced, for my sins, by
me) for the sake of BiDi processing. Everyone involved, myself included,
were all too happy to see it go. ICU is impossible to dynamically link
with, and it's size is quite huge if statically linked.

The good news is that ICU's license seems to be compatible with Wine's
LGPL, so if needed, the relevant part can be copied into Wine.

Shachar

-- 
Shachar Shemesh
Lingnu Open Source Consulting Ltd.
http://www.lingnu.com




Re: [RFC] Use ICU in wine ?

2011-10-10 Thread André Hentschel
Am 10.10.2011 17:33, schrieb Rafał Mużyło:
 Anyway, if DUCET and Windows default differ is dumping that default even
 allowed ?

I don't think so... I once was hacking on our collation stuff too to fix
http://bugs.winehq.org/show_bug.cgi?id=5163 but i guess dumping the windows 
stuff wouldn't even have helped me.



-- 

Best Regards, André Hentschel




Re: mscoree: Implement ICorDebug SetManagedHandler (try 3)

2011-10-10 Thread Alistair Leslie-Hughes

On 11/10/2011 2:07 AM, Vincent Povirk wrote:

Should SetManagedHandler really fail if the given object doesn't
support ICorDebugManagedCallback2 ?

Yes, this is a requirement for debugging .NET 2 applications.

Best Regards
   Alistair Leslie-Hughes




Re: mscoree: Implement ICorDebug SetManagedHandler (try 3)

2011-10-10 Thread Vincent Povirk
Can we have a WARN message in case of .NET 1 applications?

On Mon, Oct 10, 2011 at 2:36 PM, Alistair Leslie-Hughes
leslie_alist...@hotmail.com wrote:
 On 11/10/2011 2:07 AM, Vincent Povirk wrote:

 Should SetManagedHandler really fail if the given object doesn't
 support ICorDebugManagedCallback2 ?

 Yes, this is a requirement for debugging .NET 2 applications.

 Best Regards
   Alistair Leslie-Hughes





winex11.drv/keyboard: MAPVK_VK_TO_CHAR direct mapping

2011-10-10 Thread Sebastian Riemer
Hi developers,

I've just sent my first patch I would like to see in mainline. I did quite 
some efforts to verify that my patch is correct by doing extensive compares 
with Windows, the wine before and the patched wine as well as a special 
testing version of wine.

I want to fix this bug http://bugs.winehq.org/show_bug.cgi?id=28168 and I've 
attached my verification data there, because this is difficult to integrate 
into the test suite.

Could someone please look at my files and help me with some tips and advice or 
want to become my mentor?

I'm really tired of just writing test data into the AppDB and only little 
changes over the time for the applications I maintain. So, I want to improve 
wine for the applications I like.

Cheers,

Sebastian




Re: winex11.drv/keyboard: MAPVK_VK_TO_CHAR correction (Bug 28168)

2011-10-10 Thread Frédéric Delanoy
On Mon, Oct 10, 2011 at 22:46,  sebastian.rie...@gmx.de wrote:
 ---
  dlls/winex11.drv/keyboard.c |  563 
 ++-
  1 files changed, 499 insertions(+), 64 deletions(-)

Please follow patch submission rules from
http://wiki.winehq.org/SubmittingPatches