Re: [GSoC] My proposal for GSoC 2013

2013-03-20 Thread Austin English
On Wed, Mar 20, 2013 at 11:35 AM, Gediminas Jakutis
 wrote:
> Hello!
> For GSoC, I am suggesting my own idea. In case this idea is not good,
> I am open to changing it, thinking of a new one, or adopting one.
> My idea: I have noticed that Wine's virtual desktop feature is very
> limited - if the first program on a prefix starts without a virtual
> desktop, all programs launched during the same session also start
> without a VD, disregarding any VD settings and/or requests with
> environment variables. And vice versa - if the first program starts
> inside a VD, all other programs in that sessions start in the VD.
> Often, this can be worked around by using separate Wine prefixes. Yet
> sometimes, this workaround is not possible. A good example: steam and
> games that only run properly in a VD. This forces the user to start
> steam in a VD and makes steam itself unusable while a game is running,
> especially if the game does not support the steam overlay. I would
> like to fix this limitation and make it possible to properly choose to
> run different programs on one prefix with or without a VD regardless
> what was chosen to programs already running in that prefix. I can
> already see this requiring changes in the winecfg utility, by the way.

In addition to Vincent's comments, note that you _can_ set up virtual
desktops for certain apps but not others within a single WINEPREFIX
(though Steam may not like this, I haven't tried it myself).

There's a bit more info at
http://wiki.winehq.org/FAQ#head-dba86ae589dca54a116a3fc21f6237af45e8119c.

This has been in Wine for quite a while...a significant part of Summer
of Code is researching potential ideas before proposing them. Though
you did start early, so you have plenty of time to find other ideas
:).

-- 
-Austin




Re: winemac: Implement GetDeviceGammaRamp() and SetDeviceGammaRamp().

2013-03-20 Thread Ken Thomases
On Mar 20, 2013, at 1:33 PM, André Hentschel wrote:

> Am 18.03.2013 04:41, schrieb Ken Thomases:
>> ---
>> dlls/winemac.drv/display.c |  131 
>> 
>> dlls/winemac.drv/gdi.c |4 +-
>> dlls/winemac.drv/macdrv.h  |2 +
>> 3 files changed, 135 insertions(+), 2 deletions(-)
> 
> Hi,
> wrt macdrv_SetDeviceGammaRamp, the X11 driver has some validation in 
> xvidmode.c->ComputeGammaFromRamp() because windows doesn't allow every ramp.
> It might happen that apps try bad ramps and the screen simply gets dark 
> without validation.

Ah, interesting.  I missed that.

> I'll see if i can copy/move the validation to gdi32 where the driver function 
> normally get's called so that the validation is driver independent.

Thanks!

-Ken





Re: [GSoC] My proposal for GSoC 2013

2013-03-20 Thread Vincent Povirk
I think the reasons for the limitation on the virtual desktop setting
are more ideological than technical. It used to work the way you say,
but then Wine's desktop management was overhauled so that:
 * Explorer.exe manages all desktop windows, including the virtual
desktop. I believe this is required for multiple processes to exist in
the same virtual desktop window.
 * Wine's virtual desktops now use the window station/desktop API's
(which also exist on Windows). In theory, Windows programs can use
this to inspect all of the available desktops, interact with windows
on other desktops, and control the desktop window of child processes.
But it also means programs on different desktops are isolated from
each other unless they're programmed with desktops in mind.
 * Processes inherit desktops from parent processes rather than
creating their own. This is technically necessary because of the
previous point about isolating desktops. If a program spawns a child
process that ends up in a different desktop, the child may not be able
to communicate with the parent, and you end up with a Wine bug.

You could perhaps argue that the concept of a virtual desktop window
and the win32 concept of a desktop should be separated, and it should
be possible for a process to exist in a separate desktop window while
being in the same win32 desktop as processes that exist in a root
window. That sort of thing can currently happen when Wine is run from
two different X sessions, such as a local desktop and remote X over
ssh. Taking steam and some fullscreen game as an example, some weird
things happen when the fullscreen game is on the same desktop as steam
but its windows are in a virtual desktop. For one, the two processes
don't see the same screen resolution. If the steam window gains focus,
the fullscreen game necessarily loses focus (because only one process
per desktop can be focused), and that may cause the fullscreen game to
attempt to minimize itself.

The challenge of making this work is to come up with a system that is
consistent, a correct implementation of the win32 api, enables the use
case you want while not breaking anything that works now, and can be
implemented cleanly. If you can manage all of those things, you can
probably get your change into Wine, but it's a really hard problem and
might not even be possible.




[GSoC] My proposal for GSoC 2013

2013-03-20 Thread Gediminas Jakutis
Hello!

My name is Gediminas Jakutis. I study Informatics Engineering
[bachelor / undergraduate] at Kaunas University of Technology, second
year.
I wish to try out GSoC for the first time by helping to improve Wine.
My primary programming language is C. I am self-taught in C, but I
believe my knowledge is good enough.
I am quite familiar with Wine - I use it and experiment with it for
many years now. I am subscribed to and read wine-devel for more than a
year.
I browse through Wine's source code once in a while out of curiosity.
Thus, I have some knowledge of its structure.
Sadly, I have not written any patches for Wine yet. Mostly due to lack
of confidence.

For GSoC, I am suggesting my own idea. In case this idea is not good,
I am open to changing it, thinking of a new one, or adopting one.
My idea: I have noticed that Wine's virtual desktop feature is very
limited - if the first program on a prefix starts without a virtual
desktop, all programs launched during the same session also start
without a VD, disregarding any VD settings and/or requests with
environment variables. And vice versa - if the first program starts
inside a VD, all other programs in that sessions start in the VD.
Often, this can be worked around by using separate Wine prefixes. Yet
sometimes, this workaround is not possible. A good example: steam and
games that only run properly in a VD. This forces the user to start
steam in a VD and makes steam itself unusable while a game is running,
especially if the game does not support the steam overlay. I would
like to fix this limitation and make it possible to properly choose to
run different programs on one prefix with or without a VD regardless
what was chosen to programs already running in that prefix. I can
already see this requiring changes in the winecfg utility, by the way.
In case this turns out to be too easy of a project, I could implement
some way to perform "alt-tabbing" between programs in a VD and/or an
optional (enable-able in winecfg) rudimentary taskbar for
changing/checking focus.

I am very excited about participating in GSoC. And even more excited
about starting to contribute to Wine by writing patches!
Regardless if I get accepted or not, I wish to make Wine better. Thus,
expect me to start submitting patches in the future even if I do not
get accepted. ;]

Sincerely,
Gediminas Jakutis


LDK Varčiai www.varciai.lt




Re: winemac: Implement GetDeviceGammaRamp() and SetDeviceGammaRamp().

2013-03-20 Thread André Hentschel
Am 18.03.2013 04:41, schrieb Ken Thomases:
> ---
> dlls/winemac.drv/display.c |  131 
> dlls/winemac.drv/gdi.c |4 +-
> dlls/winemac.drv/macdrv.h  |2 +
> 3 files changed, 135 insertions(+), 2 deletions(-)

Hi,
wrt macdrv_SetDeviceGammaRamp, the X11 driver has some validation in 
xvidmode.c->ComputeGammaFromRamp() because windows doesn't allow every ramp.
It might happen that apps try bad ramps and the screen simply gets dark without 
validation.
I'll see if i can copy/move the validation to gdi32 where the driver function 
normally get's called so that the validation is driver independent.


-- 

Best Regards, André Hentschel




Re: [PATCH 2/2] msvcrt: Fixed fgetwc behavior on multibyte characters and unicode files

2013-03-20 Thread Piotr Caban

On 03/20/13 09:41, Akihiro Sagawa wrote:

On Mon, 18 Mar 2013 17:11:04 +0100, Piotr Caban wrote:

+char mbs[2];

This should be a constant, like MSVCRT_MB_LEN_MAX.


+int len = 0;
+ch = MSVCRT_fgetc(file);
+if(ch != MSVCRT_EOF) {
+mbs[0] = (char)ch;
+if(MSVCRT_isleadbyte(mbs[0])) {

This doesn't work correctly if char is signed. Because _isleadbyte()
expects the value of unsigned char or EOF as well as other is- functions.

I wrote some fgetwc() tests. Please refer following page:
https://testbot.winehq.org/JobDetails.pl?Key=24806

I've sent a fixed version. Thank you.

Thanks,
Piotr




Re: [PATCH 2/2] msvcrt: Fixed fgetwc behavior on multibyte characters and unicode files

2013-03-20 Thread Akihiro Sagawa
On Mon, 18 Mar 2013 17:11:04 +0100, Piotr Caban wrote:
> +char mbs[2];
This should be a constant, like MSVCRT_MB_LEN_MAX.

> +int len = 0;
> +ch = MSVCRT_fgetc(file);
> +if(ch != MSVCRT_EOF) {
> +mbs[0] = (char)ch;
> +if(MSVCRT_isleadbyte(mbs[0])) {
This doesn't work correctly if char is signed. Because _isleadbyte()
expects the value of unsigned char or EOF as well as other is- functions.

I wrote some fgetwc() tests. Please refer following page:
https://testbot.winehq.org/JobDetails.pl?Key=24806

Akihiro Sagawa





Re: [7/10] winemenubuilder: Create a basic Info.plist.

2013-03-20 Thread Per Johansson
On Tue, Mar 19, 2013 at 5:57 AM, Ken Thomases  wrote:
> On Mar 17, 2013, at 12:18 PM, Per Johansson wrote:
>
>> +namestr = CFStringCreateWithCString(NULL, link_name, 
>> CFStringGetSystemEncoding());
>
> You should use CFStringCreateWithFileSystemRepresentation() to create 
> CFStrings from POSIX path strings.

Fixed.

Thanks,
-- 
Per Johansson