ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
August 2010
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
14 participants
282 discussions
Start a n
N
ew thread
[cgutman] 48561: [IP] - Fix a major bug in socket closure. Prior to this, a socket with pending IRPs that could not be satisfied when the socket was closed would be destroyed without completing the pending requests. Now, we check all of our IRP queues if we get a SEL_FIN signal and kill all the requests that cannot be satisfied immediately. - Maybe it's just me but Firefox 2 seems much more responsive after this fix (like actually usable!)
by cgutman@svn.reactos.org
Author: cgutman Date: Thu Aug 19 02:41:54 2010 New Revision: 48561 URL:
http://svn.reactos.org/svn/reactos?rev=48561&view=rev
Log: [IP] - Fix a major bug in socket closure. Prior to this, a socket with pending IRPs that could not be satisfied when the socket was closed would be destroyed without completing the pending requests. Now, we check all of our IRP queues if we get a SEL_FIN signal and kill all the requests that cannot be satisfied immediately. - Maybe it's just me but Firefox 2 seems much more responsive after this fix (like actually usable!) Modified: trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c Modified: trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/transport/t…
============================================================================== --- trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] (original) +++ trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] Thu Aug 19 02:41:54 2010 @@ -35,20 +35,20 @@ Connection, Connection->SocketContext)); /* Things that can happen when we try the initial connection */ - if( Connection->SignalState & SEL_CONNECT ) { + if( Connection->SignalState & (SEL_CONNECT | SEL_FIN) ) { while (!IsListEmpty(&Connection->ConnectRequest)) { Entry = RemoveHeadList( &Connection->ConnectRequest ); Bucket = CONTAINING_RECORD( Entry, TDI_BUCKET, Entry ); - Bucket->Status = STATUS_SUCCESS; + Bucket->Status = (Connection->SignalState & SEL_CONNECT) ? STATUS_SUCCESS : STATUS_CANCELLED; Bucket->Information = 0; InsertTailList(&Connection->CompletionQueue, &Bucket->Entry); } } - if( Connection->SignalState & SEL_ACCEPT ) { + if( Connection->SignalState & (SEL_ACCEPT | SEL_FIN) ) { /* Handle readable on a listening socket -- * TODO: Implement filtering */ @@ -90,7 +90,7 @@ } /* Things that happen after we're connected */ - if( Connection->SignalState & SEL_READ ) { + if( Connection->SignalState & (SEL_READ | SEL_FIN) ) { TI_DbgPrint(DEBUG_TCP,("Readable: irp list %s\n", IsListEmpty(&Connection->ReceiveRequest) ? "empty" : "nonempty")); @@ -145,7 +145,7 @@ } } } - if( Connection->SignalState & SEL_WRITE ) { + if( Connection->SignalState & (SEL_WRITE | SEL_FIN) ) { TI_DbgPrint(DEBUG_TCP,("Writeable: irp list %s\n", IsListEmpty(&Connection->SendRequest) ? "empty" : "nonempty"));
14 years, 4 months
1
0
0
0
[tkreuzer] 48560: [FASTFAT] Make our FAT driver PNP aware. On PNP requests it should handle, it will return STATUS_NOT_IMPLEMENTED. On the others, it will pass them to lower driver. This is the first step outside the kernel into getting IoGetRelatedTargetDevice (and so notifications) working. It doesn't work at the moment, as class2 doesn't handle PNP. [NTOSKRNL] Some fixes to IRP cancelation process: - Renamed IopRemoveThreadIrp() to IopDisassociateThreadIrp() to match Windows 2k3 - Made dead I
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Aug 18 23:21:15 2010 New Revision: 48560 URL:
http://svn.reactos.org/svn/reactos?rev=48560&view=rev
Log: [FASTFAT] Make our FAT driver PNP aware. On PNP requests it should handle, it will return STATUS_NOT_IMPLEMENTED. On the others, it will pass them to lower driver. This is the first step outside the kernel into getting IoGetRelatedTargetDevice (and so notifications) working. It doesn't work at the moment, as class2 doesn't handle PNP. [NTOSKRNL] Some fixes to IRP cancelation process: - Renamed IopRemoveThreadIrp() to IopDisassociateThreadIrp() to match Windows 2k3 - Made dead IRP global, to make its debug easier. - IopDisassociateThreadIrp(), Handle dead IRP at dispatch level, using IoCompletionLock. - IopDisassociateThreadIrp(), Use the proper error code to write the entry to logs. - IoCancelIrp(), removed non needed ASSERT, which is even not present on Windows, removed corresponding var as well. - IoCancelIrp(), fixed parameters to KeBugCheckEx() call. - IoCancelThreadIo() is pageable. - IoCancelThreadIo() under Windows isn't using given thread, but using current. Do the same here. All that stuff doesn't fix bug #5550, it comes from outside. Patch by Pierre Schweitzer, modified by me to make it compile. If it breaks anything, don't blame me! Added: trunk/reactos/drivers/filesystems/fastfat/pnp.c (with props) Modified: trunk/reactos/drivers/filesystems/fastfat/iface.c trunk/reactos/drivers/filesystems/fastfat/misc.c trunk/reactos/drivers/filesystems/fastfat/vfat.h trunk/reactos/drivers/filesystems/fastfat/vfatfs.rbuild trunk/reactos/ntoskrnl/io/iomgr/irp.c Modified: trunk/reactos/drivers/filesystems/fastfat/iface.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/iface.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/iface.c [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -100,6 +100,7 @@ DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = VfatBuildRequest; DriverObject->MajorFunction[IRP_MJ_CLEANUP] = VfatBuildRequest; DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = VfatBuildRequest; + DriverObject->MajorFunction[IRP_MJ_PNP] = VfatBuildRequest; DriverObject->DriverUnload = NULL; Modified: trunk/reactos/drivers/filesystems/fastfat/misc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/misc.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/misc.c [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -127,6 +127,8 @@ return VfatCleanup(IrpContext); case IRP_MJ_FLUSH_BUFFERS: return VfatFlush(IrpContext); + case IRP_MJ_PNP: + return VfatPnp(IrpContext); default: DPRINT1 ("Unexpected major function %x\n", IrpContext->MajorFunction); IrpContext->Irp->IoStatus.Status = STATUS_DRIVER_INTERNAL_ERROR; Added: trunk/reactos/drivers/filesystems/fastfat/pnp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/pnp.c (added) +++ trunk/reactos/drivers/filesystems/fastfat/pnp.c [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -1,0 +1,42 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: drivers/filesystems/fastfat/pnp.c + * PURPOSE: VFAT Filesystem + * PROGRAMMER: Pierre Schweitzer + * + */ + +/* INCLUDES *****************************************************************/ + +#define NDEBUG +#include "vfat.h" + +/* FUNCTIONS ****************************************************************/ + +NTSTATUS VfatPnp(PVFAT_IRP_CONTEXT IrpContext) +{ + PVCB Vcb = NULL; + NTSTATUS Status; + + /* PRECONDITION */ + ASSERT(IrpContext); + + switch (IrpContext->Stack->MinorFunction) + { + case IRP_MN_QUERY_REMOVE_DEVICE: + case IRP_MN_SURPRISE_REMOVAL: + case IRP_MN_REMOVE_DEVICE: + case IRP_MN_CANCEL_REMOVE_DEVICE: + Status = STATUS_NOT_IMPLEMENTED; + break; + default: + IoSkipCurrentIrpStackLocation(IrpContext->Irp); + Vcb = (PVCB)IrpContext->Stack->DeviceObject->DeviceExtension; + Status = IoCallDriver(Vcb->StorageDevice, IrpContext->Irp); + } + + VfatFreeIrpContext(IrpContext); + + return Status; +} Propchange: trunk/reactos/drivers/filesystems/fastfat/pnp.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/drivers/filesystems/fastfat/vfat.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -775,5 +775,8 @@ NTSTATUS VfatFlushVolume(PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb); +/* --------------------------------------------------------------- pnp.c */ + +NTSTATUS VfatPnp(PVFAT_IRP_CONTEXT IrpContext); /* EOF */ Modified: trunk/reactos/drivers/filesystems/fastfat/vfatfs.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/vfatfs.rbuild [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/vfatfs.rbuild [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -21,6 +21,7 @@ <file>fsctl.c</file> <file>iface.c</file> <file>misc.c</file> + <file>pnp.c</file> <file>rw.c</file> <file>shutdown.c</file> <file>string.c</file> Modified: trunk/reactos/ntoskrnl/io/iomgr/irp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/irp.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] Wed Aug 18 23:21:15 2010 @@ -18,6 +18,8 @@ #undef IoCallDriver #undef IoCompleteRequest +PIRP IopDeadIrp; + /* PRIVATE FUNCTIONS ********************************************************/ VOID @@ -112,10 +114,9 @@ VOID NTAPI -IopRemoveThreadIrp(VOID) -{ - KIRQL OldIrql; - PIRP DeadIrp; +IopDisassociateThreadIrp(VOID) +{ + KIRQL OldIrql, LockIrql; PETHREAD IrpThread; PLIST_ENTRY IrpEntry; PIO_ERROR_LOG_PACKET ErrorLogEntry; @@ -134,36 +135,41 @@ return; } + /* Ensure no one will come disturb */ + LockIrql = KeAcquireQueuedSpinLock(LockQueueIoCompletionLock); + /* Get the misbehaving IRP */ IrpEntry = IrpThread->IrpList.Flink; - DeadIrp = CONTAINING_RECORD(IrpEntry, IRP, ThreadListEntry); + IopDeadIrp = CONTAINING_RECORD(IrpEntry, IRP, ThreadListEntry); IOTRACE(IO_IRP_DEBUG, "%s - Deassociating IRP %p for %p\n", __FUNCTION__, - DeadIrp, + IopDeadIrp, IrpThread); /* Don't cancel the IRP if it's already been completed far */ - if (DeadIrp->CurrentLocation == (DeadIrp->StackCount + 2)) + if (IopDeadIrp->CurrentLocation == (IopDeadIrp->StackCount + 2)) { /* Return */ + KeReleaseQueuedSpinLock(LockQueueIoCompletionLock, LockIrql); KeLowerIrql(OldIrql); return; } /* Disown the IRP! */ - DeadIrp->Tail.Overlay.Thread = NULL; + IopDeadIrp->Tail.Overlay.Thread = NULL; RemoveHeadList(&IrpThread->IrpList); - InitializeListHead(&DeadIrp->ThreadListEntry); + InitializeListHead(&IopDeadIrp->ThreadListEntry); /* Get the stack location and check if it's valid */ - IoStackLocation = IoGetCurrentIrpStackLocation(DeadIrp); - if (DeadIrp->CurrentLocation <= DeadIrp->StackCount) + IoStackLocation = IoGetCurrentIrpStackLocation(IopDeadIrp); + if (IopDeadIrp->CurrentLocation <= IopDeadIrp->StackCount) { /* Get the device object */ DeviceObject = IoStackLocation->DeviceObject; } + KeReleaseQueuedSpinLock(LockQueueIoCompletionLock, LockIrql); /* Lower IRQL now, since we have the pointers we need */ KeLowerIrql(OldIrql); @@ -176,7 +182,7 @@ if (ErrorLogEntry) { /* Write the entry */ - ErrorLogEntry->ErrorCode = 0xBAADF00D; /* FIXME */ + ErrorLogEntry->ErrorCode = IO_DRIVER_CANCEL_TIMEOUT; IoWriteErrorLogEntry(ErrorLogEntry); } } @@ -982,14 +988,12 @@ IoCancelIrp(IN PIRP Irp) { KIRQL OldIrql; - KIRQL IrqlAtEntry; PDRIVER_CANCEL CancelRoutine; IOTRACE(IO_IRP_DEBUG, "%s - Canceling IRP %p\n", __FUNCTION__, Irp); ASSERT(Irp->Type == IO_TYPE_IRP); - IrqlAtEntry = KeGetCurrentIrql(); /* Acquire the cancel lock and cancel the IRP */ IoAcquireCancelSpinLock(&OldIrql); @@ -1005,7 +1009,7 @@ /* It is, bugcheck */ KeBugCheckEx(CANCEL_STATE_IN_COMPLETED_IRP, (ULONG_PTR)Irp, - 0, + (ULONG_PTR)CancelRoutine, 0, 0); } @@ -1013,7 +1017,6 @@ /* Set the cancel IRQL And call the routine */ Irp->CancelIrql = OldIrql; CancelRoutine(IoGetCurrentIrpStackLocation(Irp)->DeviceObject, Irp); - ASSERT(IrqlAtEntry == KeGetCurrentIrql()); return TRUE; } @@ -1034,6 +1037,11 @@ LARGE_INTEGER Interval; PLIST_ENTRY ListHead, NextEntry; PIRP Irp; + PAGED_CODE(); + + /* Windows isn't using given thread, but using current. */ + Thread = PsGetCurrentThread(); + IOTRACE(IO_IRP_DEBUG, "%s - Canceling IRPs for Thread %p\n", __FUNCTION__, @@ -1077,7 +1085,7 @@ { /* Print out a message and remove the IRP */ DPRINT1("Broken driver did not complete!\n"); - IopRemoveThreadIrp(); + IopDisassociateThreadIrp(); } /* Raise the IRQL Again */
14 years, 4 months
1
0
0
0
[tkreuzer] 48559: [NTOSKRNL] - Simplified IopGetRelatedTargetDevice implementation - Added notification in case of success in NtSetVolumeInformationFile() Patch by Pierre Schweitzer
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Aug 17 16:04:46 2010 New Revision: 48559 URL:
http://svn.reactos.org/svn/reactos?rev=48559&view=rev
Log: [NTOSKRNL] - Simplified IopGetRelatedTargetDevice implementation - Added notification in case of success in NtSetVolumeInformationFile() Patch by Pierre Schweitzer Modified: trunk/reactos/ntoskrnl/io/iomgr/device.c trunk/reactos/ntoskrnl/io/iomgr/iofunc.c Modified: trunk/reactos/ntoskrnl/io/iomgr/device.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/device.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/device.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/device.c [iso-8859-1] Tue Aug 17 16:04:46 2010 @@ -671,7 +671,6 @@ { NTSTATUS Status; IO_STACK_LOCATION Stack = {0}; - IO_STATUS_BLOCK IoStatusBlock; PDEVICE_RELATIONS DeviceRelations; PDEVICE_OBJECT DeviceObject = NULL; @@ -682,18 +681,16 @@ if (!DeviceObject) return STATUS_NO_SUCH_DEVICE; /* Define input parameters */ + Stack.MajorFunction = IRP_MJ_PNP; + Stack.MinorFunction = IRP_MN_QUERY_DEVICE_RELATIONS; Stack.Parameters.QueryDeviceRelations.Type = TargetDeviceRelation; Stack.FileObject = FileObject; /* Call the driver to query all relations (IRP_MJ_PNP) */ - Status = IopInitiatePnpIrp(DeviceObject, - &IoStatusBlock, - IRP_MN_QUERY_DEVICE_RELATIONS, - &Stack); + Status = IopSynchronousCall(DeviceObject, + &Stack, + (PVOID)&DeviceRelations); if (!NT_SUCCESS(Status)) return Status; - - /* Get returned pointer to DEVICE_RELATIONS */ - DeviceRelations = (PDEVICE_RELATIONS)IoStatusBlock.Information; /* Make sure it's not NULL and contains only one object */ ASSERT(DeviceRelations); Modified: trunk/reactos/ntoskrnl/io/iomgr/iofunc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iofunc.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iofunc.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iofunc.c [iso-8859-1] Tue Aug 17 16:04:46 2010 @@ -11,6 +11,7 @@ /* INCLUDES *****************************************************************/ #include <ntoskrnl.h> +#include <ioevent.h> #define NDEBUG #include <debug.h> #include "internal/io_i.h" @@ -3223,12 +3224,13 @@ PFILE_OBJECT FileObject; PIRP Irp; PIO_STACK_LOCATION StackPtr; - PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT DeviceObject, TargetDeviceObject; PKEVENT Event = NULL; BOOLEAN LocalEvent = FALSE; KPROCESSOR_MODE PreviousMode = KeGetPreviousMode(); NTSTATUS Status; IO_STATUS_BLOCK KernelIosb; + TARGET_DEVICE_CUSTOM_NOTIFICATION NotificationStructure; PAGED_CODE(); IOTRACE(IO_API_DEBUG, "FileHandle: %p\n", FileHandle); @@ -3277,6 +3279,10 @@ NULL); if (!NT_SUCCESS(Status)) return Status; + /* Get target device for notification */ + Status = IoGetRelatedTargetDevice(FileObject, &TargetDeviceObject); + if (!NT_SUCCESS(Status)) TargetDeviceObject = NULL; + /* Check if we should use Sync IO or not */ if (FileObject->Flags & FO_SYNCHRONOUS_IO) { @@ -3290,6 +3296,7 @@ if (!Event) { ObDereferenceObject(FileObject); + if (TargetDeviceObject) ObDereferenceObject(TargetDeviceObject); return STATUS_INSUFFICIENT_RESOURCES; } KeInitializeEvent(Event, SynchronizationEvent, FALSE); @@ -3304,7 +3311,11 @@ /* Allocate the IRP */ Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE); - if (!Irp) return IopCleanupFailedIrp(FileObject, NULL, Event); + if (!Irp) + { + if (TargetDeviceObject) ObDereferenceObject(TargetDeviceObject); + return IopCleanupFailedIrp(FileObject, NULL, Event); + } /* Set up the IRP */ Irp->RequestorMode = PreviousMode; @@ -3339,6 +3350,7 @@ { /* Allocating failed, clean up and return the exception code */ IopCleanupAfterException(FileObject, Irp, NULL, Event); + if (TargetDeviceObject) ObDereferenceObject(TargetDeviceObject); _SEH2_YIELD(return _SEH2_GetExceptionCode()); } _SEH2_END; @@ -3369,6 +3381,17 @@ PreviousMode, &KernelIosb, IoStatusBlock); + } + + if (TargetDeviceObject && NT_SUCCESS(Status)) + { + /* Time to report change */ + NotificationStructure.Version = 1; + NotificationStructure.Size = sizeof(TARGET_DEVICE_CUSTOM_NOTIFICATION); + NotificationStructure.Event = GUID_IO_VOLUME_NAME_CHANGE; + NotificationStructure.FileObject = NULL; + NotificationStructure.NameBufferOffset = - 1; + Status = IoReportTargetDeviceChange(TargetDeviceObject, &NotificationStructure); } /* Return status */
14 years, 4 months
1
0
0
0
[tkreuzer] 48558: [RTL] - Implement RtlFindLastBackwardRunClear (needs to be tested) - Rename a variable to better reflect it's purpose - Improve a check - Fix a bug in RtlFindNextForwardRunSet
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 16 21:04:10 2010 New Revision: 48558 URL:
http://svn.reactos.org/svn/reactos?rev=48558&view=rev
Log: [RTL] - Implement RtlFindLastBackwardRunClear (needs to be tested) - Rename a variable to better reflect it's purpose - Improve a check - Fix a bug in RtlFindNextForwardRunSet Modified: branches/ros-amd64-bringup/reactos/lib/rtl/bitmap.c Modified: branches/ros-amd64-bringup/reactos/lib/rtl/bitmap.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/r…
============================================================================== --- branches/ros-amd64-bringup/reactos/lib/rtl/bitmap.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/rtl/bitmap.c [iso-8859-1] Mon Aug 16 21:04:10 2010 @@ -51,7 +51,7 @@ IN ULONG MaxLength) { ULONG Value, BitPos, Length; - PULONG Buffer, MaxBuffer; + PULONG Buffer, BufferEnd; /* Calculate positions */ Buffer = BitMapHeader->Buffer + StartingIndex / 32; @@ -59,22 +59,22 @@ /* Calculate the maximum length */ MaxLength = min(MaxLength, BitMapHeader->SizeOfBitMap - StartingIndex); - MaxBuffer = Buffer + (BitPos + MaxLength + 31) / 32; + BufferEnd = Buffer + (BitPos + MaxLength + 31) / 32; /* Clear the bits that don't belong to this run */ Value = *Buffer++ >> BitPos << BitPos; /* Skip all clear ULONGs */ - while (Value == 0 && Buffer < MaxBuffer) - { + while (Value == 0) + { + /* Did we reach the end? */ + if (Buffer == BufferEnd) + { + /* Return maximum length */ + return MaxLength; + } + Value = *Buffer++; - } - - /* Did we reach the end? */ - if (Value == 0) - { - /* Return maximum length */ - return MaxLength; } /* We hit a set bit, check how many clear bits are left */ @@ -100,7 +100,7 @@ IN ULONG MaxLength) { ULONG InvValue, BitPos, Length; - PULONG Buffer, MaxBuffer; + PULONG Buffer, BufferEnd; /* Calculate positions */ Buffer = BitMapHeader->Buffer + StartingIndex / 32; @@ -108,22 +108,22 @@ /* Calculate the maximum length */ MaxLength = min(MaxLength, BitMapHeader->SizeOfBitMap - StartingIndex); - MaxBuffer = Buffer + (BitPos + MaxLength + 31) / 32; + BufferEnd = Buffer + (BitPos + MaxLength + 31) / 32; /* Get the inversed value, clear bits that don't belong to the run */ InvValue = ~(*Buffer++) >> BitPos << BitPos; /* Skip all set ULONGs */ - while (InvValue == 0 && Buffer < MaxBuffer) - { + while (InvValue == 0) + { + /* Did we reach the end? */ + if (Buffer == BufferEnd) + { + /* Yes, return maximum */ + return MaxLength; + } + InvValue = ~(*Buffer++); - } - - /* Did we reach the end? */ - if (InvValue == 0) - { - /* Yes, return maximum */ - return MaxLength; } /* We hit a clear bit, check how many set bits are left */ @@ -603,7 +603,7 @@ *StartingRunIndex = FromIndex + Length; /* Now return the length of the run */ - return RtlpGetLengthOfRunSet(BitMapHeader, FromIndex, MAXULONG); + return RtlpGetLengthOfRunSet(BitMapHeader, FromIndex + Length, MAXULONG); } ULONG @@ -622,8 +622,62 @@ IN ULONG FromIndex, IN PULONG StartingRunIndex) { - UNIMPLEMENTED; - return 0; + ULONG Value, InvValue, BitPos; + PULONG Buffer; + + /* Make sure we don't go past the end */ + FromIndex = min(FromIndex, BitMapHeader->SizeOfBitMap - 1); + + /* Calculate positions */ + Buffer = BitMapHeader->Buffer + FromIndex / 32; + BitPos = 31 - (FromIndex & 31); + + /* Get the inversed value, clear bits that don't belong to the run */ + InvValue = ~(*Buffer--) << BitPos >> BitPos; + + /* Skip all set ULONGs */ + while (InvValue == 0) + { + /* Did we already reach past the first ULONG? */ + if (Buffer < BitMapHeader->Buffer) + { + /* Yes, nothing found */ + return 0; + } + + InvValue = ~(*Buffer--); + } + + /* We hit a clear bit, check how many set bits are left */ + BitScanReverse(&BitPos, InvValue); + + /* Calculate last bit position */ + FromIndex = (Buffer + 1 - BitMapHeader->Buffer) * 32 + BitPos; + + Value = ~InvValue << (31-BitPos) >> (31-BitPos); + + /* Skip all clear ULONGs */ + while (Value == 0 && Buffer >= BitMapHeader->Buffer) + { + Value = *Buffer--; + } + + if (Value != 0) + { + /* We hit a set bit, check how many clear bits are left */ + BitScanReverse(&BitPos, Value); + + /* Calculate Starting Index */ + *StartingRunIndex = (Buffer + 1 - BitMapHeader->Buffer) * 32 + BitPos + 1; + } + else + { + /* We reached the start of the bitmap */ + *StartingRunIndex = 0; + } + + /* Return length of the run */ + return FromIndex - *StartingRunIndex; }
14 years, 4 months
1
0
0
0
[tkreuzer] 48557: [NTOSKRNL] - Fixed IoGetRequestorProcess, IoGetRequestorProcessId, IoGetRequestorSessionId - Pass user buffer in NtNotifyChangeDirectoryFile - Fixed magic value in IoGetPagingIoPriority Patch by Pierre Schweitzer
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 16 20:18:25 2010 New Revision: 48557 URL:
http://svn.reactos.org/svn/reactos?rev=48557&view=rev
Log: [NTOSKRNL] - Fixed IoGetRequestorProcess, IoGetRequestorProcessId, IoGetRequestorSessionId - Pass user buffer in NtNotifyChangeDirectoryFile - Fixed magic value in IoGetPagingIoPriority Patch by Pierre Schweitzer Modified: trunk/reactos/include/ddk/wdm.h trunk/reactos/include/xdk/iotypes.h trunk/reactos/ntoskrnl/io/iomgr/iofunc.c trunk/reactos/ntoskrnl/io/iomgr/irp.c Modified: trunk/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=4855…
============================================================================== --- trunk/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/wdm.h [iso-8859-1] Mon Aug 16 20:18:25 2010 @@ -5456,6 +5456,8 @@ #define IRP_DEFER_IO_COMPLETION 0x00000800 #define IRP_OB_QUERY_NAME 0x00001000 #define IRP_HOLD_DEVICE_QUEUE 0x00002000 +#define IRP_RETRY_IO_COMPLETION 0x00004000 +#define IRP_CLASS_CACHE_OPERATION 0x00008000 #define IRP_QUOTA_CHARGED 0x01 #define IRP_ALLOCATED_MUST_SUCCEED 0x02 Modified: trunk/reactos/include/xdk/iotypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/iotypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/iotypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/iotypes.h [iso-8859-1] Mon Aug 16 20:18:25 2010 @@ -1793,6 +1793,9 @@ #define IRP_DEFER_IO_COMPLETION 0x00000800 #define IRP_OB_QUERY_NAME 0x00001000 #define IRP_HOLD_DEVICE_QUEUE 0x00002000 +/* The following 2 are missing in latest WDK */ +#define IRP_RETRY_IO_COMPLETION 0x00004000 +#define IRP_CLASS_CACHE_OPERATION 0x00008000 #define IRP_QUOTA_CHARGED 0x01 #define IRP_ALLOCATED_MUST_SUCCEED 0x02 Modified: trunk/reactos/ntoskrnl/io/iomgr/iofunc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iofunc.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iofunc.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iofunc.c [iso-8859-1] Mon Aug 16 20:18:25 2010 @@ -1175,6 +1175,7 @@ Irp->RequestorMode = PreviousMode; Irp->UserIosb = IoStatusBlock; Irp->UserEvent = Event; + Irp->UserBuffer = Buffer; Irp->Tail.Overlay.Thread = PsGetCurrentThread(); Irp->Tail.Overlay.OriginalFileObject = FileObject; Irp->Overlay.AsynchronousParameters.UserApcRoutine = ApcRoutine; Modified: trunk/reactos/ntoskrnl/io/iomgr/irp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/irp.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] Mon Aug 16 20:18:25 2010 @@ -1415,7 +1415,6 @@ else { /* The IRP just got canceled... does a thread still own it? */ - Thread = Irp->Tail.Overlay.Thread; if (Thread) { /* Yes! There is still hope! Initialize the APC */ @@ -1576,7 +1575,7 @@ Flags = Irp->Flags; /* Check what priority it has */ - if (Flags & 0x8000) // FIXME: Undocumented flag + if (Flags & IRP_CLASS_CACHE_OPERATION) { /* High priority */ Priority = IoPagingPriorityHigh; @@ -1604,7 +1603,12 @@ IoGetRequestorProcess(IN PIRP Irp) { /* Return the requestor process */ - return Irp->Tail.Overlay.Thread->ThreadsProcess; + if (Irp->Tail.Overlay.Thread) + { + return Irp->Tail.Overlay.Thread->ThreadsProcess; + } + + return NULL; } /* @@ -1614,8 +1618,15 @@ NTAPI IoGetRequestorProcessId(IN PIRP Irp) { + PEPROCESS Process; + /* Return the requestor process' id */ - return PtrToUlong(IoGetRequestorProcess(Irp)->UniqueProcessId); + if ((Process = IoGetRequestorProcess(Irp))) + { + return PtrToUlong(Process->UniqueProcessId); + } + + return 0; } /* @@ -1626,9 +1637,17 @@ IoGetRequestorSessionId(IN PIRP Irp, OUT PULONG pSessionId) { + PEPROCESS Process; + /* Return the session */ - *pSessionId = IoGetRequestorProcess(Irp)->Session; - return STATUS_SUCCESS; + if ((Process = IoGetRequestorProcess(Irp))) + { + *pSessionId = Process->Session; + return STATUS_SUCCESS; + } + + *pSessionId = (ULONG)-1; + return STATUS_UNSUCCESSFUL; } /*
14 years, 4 months
1
0
0
0
[tkreuzer] 48556: [NTDLL] LdrPerformRelocations: Delta is a LONG_PTR rather than ULONG_PTR See issue #5577 for more details.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 16 01:57:09 2010 New Revision: 48556 URL:
http://svn.reactos.org/svn/reactos?rev=48556&view=rev
Log: [NTDLL] LdrPerformRelocations: Delta is a LONG_PTR rather than ULONG_PTR See issue #5577 for more details. Modified: trunk/reactos/dll/ntdll/ldr/utils.c Modified: trunk/reactos/dll/ntdll/ldr/utils.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/ldr/utils.c?rev=…
============================================================================== --- trunk/reactos/dll/ntdll/ldr/utils.c [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/ldr/utils.c [iso-8859-1] Mon Aug 16 01:57:09 2010 @@ -1388,7 +1388,7 @@ ULONG Count, ProtectSize, OldProtect, OldProtect2; PVOID Page, ProtectPage, ProtectPage2; PUSHORT TypeOffset; - ULONG_PTR Delta; + LONG_PTR Delta; NTSTATUS Status; if (NTHeaders->FileHeader.Characteristics & IMAGE_FILE_RELOCS_STRIPPED)
14 years, 4 months
1
0
0
0
[tkreuzer] 48555: [WIN32K] - Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. - If a NULL surface is passed, pass on NULL pso to the driver function See issue #4563 for more details.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 16 01:29:13 2010 New Revision: 48555 URL:
http://svn.reactos.org/svn/reactos?rev=48555&view=rev
Log: [WIN32K] - Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. - If a NULL surface is passed, pass on NULL pso to the driver function See issue #4563 for more details. Modified: trunk/reactos/subsystems/win32/win32k/objects/print.c Modified: trunk/reactos/subsystems/win32/win32k/objects/print.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/print.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/print.c [iso-8859-1] Mon Aug 16 01:29:13 2010 @@ -89,23 +89,6 @@ INT APIENTRY -IntEngExtEscape( - SURFOBJ *Surface, - INT Escape, - INT InSize, - LPVOID InData, - INT OutSize, - LPVOID OutData) -{ - if (Escape == QUERYESCSUPPORT) - return FALSE; - - DPRINT1("IntEngExtEscape is unimplemented. - Keep going and have a nice day\n"); - return -1; -} - -INT -APIENTRY IntGdiExtEscape( PDC dc, INT Escape, @@ -117,22 +100,14 @@ SURFACE *psurf = dc->dclevel.pSurface; INT Result; - /* FIXME - Handle psurf == NULL !!!!!! */ - - if ( NULL == dc->ppdev->DriverFunctions.Escape ) - { - Result = IntEngExtEscape( - &psurf->SurfObj, - Escape, - InSize, - (PVOID)((ULONG_PTR)InData), - OutSize, - (PVOID)OutData); + if (!dc->ppdev->DriverFunctions.Escape) + { + Result = 0; } else { Result = dc->ppdev->DriverFunctions.Escape( - &psurf->SurfObj, + psurf ? &psurf->SurfObj : NULL, Escape, InSize, (PVOID)InData,
14 years, 4 months
1
0
0
0
[tkreuzer] 48554: [user32_winetest] Skip 2 tests that hang on reactos. Patch by Giannis Adamopoulos
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 16 00:06:55 2010 New Revision: 48554 URL:
http://svn.reactos.org/svn/reactos?rev=48554&view=rev
Log: [user32_winetest] Skip 2 tests that hang on reactos. Patch by Giannis Adamopoulos Modified: trunk/rostests/winetests/user32/msg.c trunk/rostests/winetests/user32/win.c Modified: trunk/rostests/winetests/user32/msg.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/msg.c?re…
============================================================================== --- trunk/rostests/winetests/user32/msg.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/msg.c [iso-8859-1] Mon Aug 16 00:06:55 2010 @@ -12572,7 +12572,8 @@ test_paint_messages(); test_interthread_messages(); test_message_conversion(); - test_accelerators(); + skip("skipping test_accelerators, that hangs on reactos\n"); + //test_accelerators(); test_timers(); test_timers_no_wnd(); if (hCBT_hook) test_set_hook(); @@ -12593,7 +12594,8 @@ test_dialog_messages(); test_nullCallback(); test_dbcs_wm_char(); - test_menu_messages(); + skip("skipping test_menu_messages, that hangs on reactos\n"); + //test_menu_messages(); test_paintingloop(); test_defwinproc(); test_clipboard_viewers(); Modified: trunk/rostests/winetests/user32/win.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/win.c?re…
============================================================================== --- trunk/rostests/winetests/user32/win.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/win.c [iso-8859-1] Mon Aug 16 00:06:55 2010 @@ -6058,7 +6058,9 @@ test_capture_1(); test_capture_2(); test_capture_3(hwndMain, hwndMain2); - test_capture_4(); + + skip("skipping test_capture_4, that hangs on reactos\n"); + //test_capture_4(); test_CreateWindow(); test_parent_owner();
14 years, 4 months
1
0
0
0
[jgardou] 48553: Revert parts of r48547 which have nothing to do with the sync
by jgardou@svn.reactos.org
Author: jgardou Date: Sun Aug 15 14:51:39 2010 New Revision: 48553 URL:
http://svn.reactos.org/svn/reactos?rev=48553&view=rev
Log: Revert parts of r48547 which have nothing to do with the sync Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/bitblt.c branches/reactos-yarotows/subsystems/win32/win32k/include/xlateobj.h branches/reactos-yarotows/subsystems/win32/win32k/ntuser/cursoricon.c branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/bitblt.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] Sun Aug 15 14:51:39 2010 @@ -435,11 +435,11 @@ clippingType = ClipRegion->iDComplexity; } - /*if (R4_MASK == rop4) + if (R4_MASK == rop4) { BltRectFunc = BltMask; } - else */if (ROP3_TO_ROP4(PATCOPY) == rop4) + else if (ROP3_TO_ROP4(PATCOPY) == rop4) { if (pbo && pbo->iSolidColor == 0xFFFFFFFF) BltRectFunc = CallDibBitBlt; Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/xlateobj.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/include/xlateobj.h [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/include/xlateobj.h [iso-8859-1] Sun Aug 15 14:51:39 2010 @@ -48,6 +48,4 @@ VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, ULONG Color0, ULONG Color1); VOID NTAPI EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo); -extern XLATEOBJ* gpxloTrivial; - //#define XLATEOBJ_iXlate(pxo, Color) ((EXLATEOBJ*)pxo)->pfnXlate(pxo, Color) Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/cursoricon.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] Sun Aug 15 14:51:39 2010 @@ -38,7 +38,7 @@ #include <win32k.h> -//#define NDEBUG +#define NDEBUG #include <debug.h> static PAGED_LOOKASIDE_LIST gProcessLookasideList; @@ -1217,92 +1217,71 @@ HBRUSH hbrFlickerFreeDraw, UINT diFlags) { - PSURFACE psurfColor = NULL, psurfMask, psurfDst = NULL; - HGDIOBJ hObjs[3]; - PGDIOBJ pObjs[3]; + BOOL Ret = FALSE; + HBITMAP hbmMask, hbmColor; + BITMAP bmpColor, bm; BOOL DoFlickerFree; - PDC pdc; - HSURF hsurfDst = NULL; - RECTL rcSrc, rcDst; - CLIPOBJ clo, *pclo; - EXLATEOBJ exlo; - BOOL bAlpha = FALSE, Ret = FALSE, bStretch; + INT iOldBkColor = 0, iOldTxtColor = 0; + + HDC hMemDC, hDestDC = hDc; + HGDIOBJ hOldOffBrush = 0; + HGDIOBJ hOldOffBmp = 0; + HBITMAP hTmpBmp = 0, hOffBmp = 0; + BOOL bAlpha = FALSE; + INT x=xLeft, y=yTop; + + hbmMask = pIcon->IconInfo.hbmMask; + hbmColor = pIcon->IconInfo.hbmColor; if (istepIfAniCur) DPRINT1("NtUserDrawIconEx: istepIfAniCur is not supported!\n"); - DPRINT("Flags : 0x%08x\n", diFlags); - - hObjs[0] = pIcon->IconInfo.hbmMask; - hObjs[1] = pIcon->IconInfo.hbmColor; - hObjs[2] = hDc; - GDIOBJ_LockMultipleObjs(3, hObjs, pObjs); - psurfMask = pObjs[0]; - psurfColor = pObjs[1]; - pdc = pObjs[2]; - - if (!pIcon->IconInfo.hbmMask - || !psurfMask) - { - DPRINT1("No hbmMask?!\n"); - if(pdc) DC_UnlockDc(pdc); - if(psurfColor) SURFACE_UnlockSurface(psurfColor); + if (!hbmMask || !IntGdiGetObject(hbmMask, sizeof(BITMAP), (PVOID)&bm)) + { return FALSE; } - if (pIcon->IconInfo.hbmColor - && !psurfColor) - { - DPRINT1("Unable to lock the color Bitmap?!\n"); - SURFACE_UnlockSurface(psurfMask); - if(pdc) DC_UnlockDc(pdc); + if (hbmColor && !IntGdiGetObject(hbmColor, sizeof(BITMAP), (PVOID)&bmpColor)) + { return FALSE; } - if(!psurfColor) - { - DPRINT("Monochrome Icon\n"); - psurfColor = psurfMask; - RECTL_vSetRect(&rcSrc, 0, pIcon->Size.cy, pIcon->Size.cx, 2*pIcon->Size.cy); - } - else - { - DPRINT("Color Icon\n"); - RECTL_vSetRect(&rcSrc, 0, 0, pIcon->Size.cx, pIcon->Size.cy); - } - - if(!pdc) - { - SetLastWin32Error(ERROR_INVALID_PARAMETER); - SURFACE_UnlockSurface(psurfMask); - if(psurfColor != psurfMask) SURFACE_UnlockSurface(psurfColor); - DPRINT1("Invalid DC!\n"); + if(!(hMemDC = NtGdiCreateCompatibleDC(hDc))) + { + DPRINT1("NtGdiCreateCompatibleDC failed!\n"); return FALSE; } /* Check for alpha */ - if ((BitsPerFormat(psurfColor->SurfObj.iBitmapFormat) == 32) + if (hbmColor + && (bmpColor.bmBitsPixel == 32) && (diFlags & DI_IMAGE)) { + SURFACE *psurfOff = NULL; PFN_DIB_GetPixel fnSource_GetPixel = NULL; INT i, j; /* In order to correctly display 32 bit icons Windows first scans the image, because information about transparency is not stored in any image's headers */ - fnSource_GetPixel = DibFunctionsForBitmapFormat[psurfColor->SurfObj.iBitmapFormat].DIB_GetPixel; - if (fnSource_GetPixel) - { - for (i = 0; i < psurfColor->SurfObj.sizlBitmap.cx; i++) + psurfOff = SURFACE_LockSurface(hbmColor); + if (psurfOff) + { + fnSource_GetPixel = DibFunctionsForBitmapFormat[psurfOff->SurfObj.iBitmapFormat].DIB_GetPixel; + if (fnSource_GetPixel) { - for (j = 0; j < psurfColor->SurfObj.sizlBitmap.cy; j++) + for (i = 0; i < psurfOff->SurfObj.sizlBitmap.cx; i++) { - bAlpha = ((BYTE)(fnSource_GetPixel(&psurfColor->SurfObj, i, j) >> 24) & 0xff); + for (j = 0; j < psurfOff->SurfObj.sizlBitmap.cy; j++) + { + bAlpha = ((BYTE)(fnSource_GetPixel(&psurfOff->SurfObj, i, j) >> 24) & 0xff); + if (bAlpha) + break; + } if (bAlpha) break; } - if (bAlpha) - break; } + SURFACE_UnlockSurface(psurfOff); } } @@ -1314,90 +1293,45 @@ cyHeight = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CYICON) : pIcon->Size.cy); - /* Check stretching */ - bStretch = (pIcon->Size.cx != cxWidth) || (pIcon->Size.cy != cyHeight); - DoFlickerFree = (hbrFlickerFreeDraw && (GDI_HANDLE_GET_TYPE(hbrFlickerFreeDraw) == GDI_OBJECT_TYPE_BRUSH)); if (DoFlickerFree) { - EBRUSHOBJ ebo; - PBRUSH pBrush ; - POINTL ptBrushOrig; - - pBrush = BRUSH_LockBrush(hbrFlickerFreeDraw); - if(!pBrush) - { - SetLastWin32Error(ERROR_INVALID_PARAMETER); - DPRINT1("Invalid brush!\n"); - goto cleanup; - } - - hsurfDst = IntCreateCompatibleBitmap(pdc, cxWidth, cyHeight); - if(!hsurfDst) - { - DPRINT1("Error : Failed to allocate the offscreen surface\n"); - goto cleanup; - } - psurfDst = SURFACE_LockSurface(hsurfDst); - if(!psurfDst) - { - DPRINT1("Error : Failed to lock the offScreen bitmap\n"); - goto cleanup; - } - RECTL_vSetRect(&rcDst, 0, 0, cxWidth, cyHeight); - - ptBrushOrig.x = pBrush->ptOrigin.x; - ptBrushOrig.y = pBrush->ptOrigin.y; - - EBRUSHOBJ_vInit(&ebo, pBrush, pdc); - - clo.iDComplexity = DC_TRIVIAL; - pclo = &clo; - - IntEngBitBlt(&psurfDst->SurfObj, NULL, NULL, pclo, NULL, &rcDst, NULL, - NULL, &ebo.BrushObject, &ptBrushOrig, ROP3_TO_ROP4(PATCOPY)); - - EBRUSHOBJ_vCleanup(&ebo); - BRUSH_UnlockBrush(pBrush); - } - else - { - RECT rcBmp; - RECTL_vSetRect(&rcDst, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight); - IntLPtoDP(pdc, (LPPOINT)&rcDst, 2); - RECTL_vOffsetRect(&rcDst, pdc->ptlDCOrig.x, pdc->ptlDCOrig.y); - - DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcDst ); - - if (pdc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(pdc); - - psurfDst = pdc->dclevel.pSurface; - pclo = pdc->rosdc.CombinedClip; - RECTL_vSetRect(&rcBmp, 0, 0, psurfDst->SurfObj.sizlBitmap.cx, psurfDst->SurfObj.sizlBitmap.cy); - if(!RECTL_bIntersectRect(&rcDst, &rcDst, &rcBmp)) - { + hDestDC = NtGdiCreateCompatibleDC(hDc); + if(!hDestDC) + { + DPRINT1("NtGdiCreateCompatibleDC failed!\n"); Ret = FALSE; - goto done; - } - } - - /* Optimization : use directly the palette of the DC, - * so we XLATE only once, and then we directly copy bits */ - EXLATEOBJ_vInitialize(&exlo, psurfColor->ppal, pdc->dclevel.pSurface->ppal, 0, 0, 0xFFFFFFFF); + goto Cleanup ; + } + hOffBmp = NtGdiCreateCompatibleBitmap(hDc, cxWidth, cyHeight); + if(!hOffBmp) + { + DPRINT1("NtGdiCreateCompatibleBitmap failed!\n"); + goto Cleanup ; + } + hOldOffBmp = NtGdiSelectBitmap(hDestDC, hOffBmp); + hOldOffBrush = NtGdiSelectBrush(hDestDC, hbrFlickerFreeDraw); + NtGdiPatBlt(hDestDC, 0, 0, cxWidth, cyHeight, PATCOPY); + NtGdiSelectBrush(hDestDC, hOldOffBrush); + x=y=0; + } + + /* Set Background/foreground colors */ + iOldTxtColor = IntGdiSetTextColor(hDc, 0); //black + iOldBkColor = IntGdiSetBkColor(hDc, 0x00FFFFFF); //white if(bAlpha && (diFlags & DI_IMAGE)) { BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA }; BYTE Alpha; INT i, j; - PSURFACE psurf = NULL; + PSURFACE psurf; PBYTE ptr ; HBITMAP hMemBmp = NULL; - hMemBmp = BITMAP_CopyBitmap(pIcon->IconInfo.hbmColor); + hMemBmp = BITMAP_CopyBitmap(hbmColor); if(!hMemBmp) { DPRINT1("BITMAP_CopyBitmap failed!"); @@ -1426,116 +1360,109 @@ } } - DPRINT("Performing alpha blending\n"); - Ret = IntEngAlphaBlend(&psurfDst->SurfObj, - &psurf->SurfObj, - pclo, - &exlo.xlo, - &rcDst, - &rcSrc, - (BLENDOBJ*)&pixelblend); - + SURFACE_UnlockSurface(psurf); + + hTmpBmp = NtGdiSelectBitmap(hMemDC, hMemBmp); + + Ret = NtGdiAlphaBlend(hDestDC, + x, + y, + cxWidth, + cyHeight, + hMemDC, + 0, + 0, + pIcon->Size.cx, + pIcon->Size.cy, + pixelblend, + NULL); + NtGdiSelectBitmap(hMemDC, hTmpBmp); CleanupAlpha: - if(psurf) SURFACE_UnlockSurface(psurf); if(hMemBmp) NtGdiDeleteObjectApp(hMemBmp); if(Ret) goto done; - else DPRINT1("IntEngAlphaBlend failed!\n"); - } - - if (diFlags & DI_IMAGE) - { - POINTL ptMaskOrig = {0,0}; - if(bStretch) - { - DPRINT("Stretching\n"); - Ret = IntEngStretchBlt(&psurfDst->SurfObj, - &psurfColor->SurfObj, - (diFlags & DI_MASK) ? &psurfMask->SurfObj : NULL, - pclo, - &exlo.xlo, - &rcDst, - &rcSrc, - (diFlags & DI_MASK) ? &ptMaskOrig : NULL, - NULL, - NULL, - (diFlags & DI_MASK) ? R4_MASK : ROP3_TO_ROP4(SRCCOPY)); - if(!Ret) DPRINT1("IntEngStretchBlt Failed\n"); + } + + if (diFlags & DI_MASK) + { + hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmMask); + NtGdiStretchBlt(hDestDC, + x, + y, + cxWidth, + cyHeight, + hMemDC, + 0, + 0, + pIcon->Size.cx, + pIcon->Size.cy, + SRCAND, + 0); + NtGdiSelectBitmap(hMemDC, hTmpBmp); + } + + if(diFlags & DI_IMAGE) + { + if (hbmColor) + { + DWORD rop = (diFlags & DI_MASK) ? SRCINVERT : SRCCOPY ; + hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmColor); + NtGdiStretchBlt(hDestDC, + x, + y, + cxWidth, + cyHeight, + hMemDC, + 0, + 0, + pIcon->Size.cx, + pIcon->Size.cy, + rop, + 0); + NtGdiSelectBitmap(hMemDC, hTmpBmp); } else { - DPRINT("Blting\n"); - Ret = IntEngBitBlt(&psurfDst->SurfObj, - &psurfColor->SurfObj, - (diFlags & DI_MASK) ? &psurfMask->SurfObj : NULL, - pclo, - &exlo.xlo, - &rcDst, - (PPOINTL)&rcSrc, - (diFlags & DI_MASK) ? &ptMaskOrig : NULL, - NULL, - NULL, - (diFlags & DI_MASK) ? R4_MASK : ROP3_TO_ROP4(SRCCOPY)); - if(!Ret) DPRINT1("IntEngBitBlt Failed\n"); - } - } - else - { - DPRINT1("Uh? Calling DrawIcon without anything to draw? diFlags %d\n", diFlags); + /* Mask bitmap holds the information in its second half */ + DWORD rop = (diFlags & DI_MASK) ? SRCINVERT : SRCCOPY ; + hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmMask); + NtGdiStretchBlt(hDestDC, + x, + y, + cxWidth, + cyHeight, + hMemDC, + 0, + pIcon->Size.cy, + pIcon->Size.cx, + pIcon->Size.cy, + rop, + 0); + NtGdiSelectBitmap(hMemDC, hTmpBmp); + } } done: - if(DoFlickerFree && Ret) - { - POINTL ptSrc = {0,0}; - RECTL rcBmp; - - RECTL_vSetRect(&rcDst, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight); - - IntLPtoDP(pdc, (LPPOINT)&rcDst, 2); - - RECTL_vOffsetRect(&rcDst, pdc->ptlDCOrig.x, pdc->ptlDCOrig.y); - DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcDst ); - - if (pdc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(pdc); - - RECTL_vSetRect(&rcBmp, 0, 0, - pdc->dclevel.pSurface->SurfObj.sizlBitmap.cx, - pdc->dclevel.pSurface->SurfObj.sizlBitmap.cy); - - if(RECTL_bIntersectRect(&rcDst, &rcDst, &rcBmp)) - { - /* Copy everything */ - DPRINT("Copying bits from offscreen buffer\n"); - Ret = IntEngCopyBits(&pdc->dclevel.pSurface->SurfObj, - &psurfDst->SurfObj, - pdc->rosdc.CombinedClip, - gpxloTrivial, - &rcDst, - &ptSrc); - if(!Ret) DPRINT1("IntEngCopyBits Failed\n"); - } - - DC_vFinishBlit(pdc, NULL); - } - - if(!DoFlickerFree) DC_vFinishBlit(pdc, NULL); - EXLATEOBJ_vCleanup(&exlo); - -cleanup: - if(psurfColor != psurfMask) - SURFACE_UnlockSurface(psurfColor); - SURFACE_UnlockSurface(psurfMask); - if(hsurfDst) - { - if(psurfDst) SURFACE_UnlockSurface(psurfDst); - GreDeleteObject(hsurfDst); - } - DC_UnlockDc(pdc); - - DPRINT("return %s\n", Ret ? "TRUE" : "FALSE") ; - - return Ret ; + if(hDestDC != hDc) + { + NtGdiBitBlt(hDc, xLeft, yTop, cxWidth, cyHeight, hDestDC, 0, 0, SRCCOPY, 0, 0); + } + + /* Restore foreground and background colors */ + IntGdiSetBkColor(hDc, iOldBkColor); + IntGdiSetTextColor(hDc, iOldTxtColor); + + Ret = TRUE ; + +Cleanup: + NtGdiDeleteObjectApp(hMemDC); + if(hDestDC != hDc) + { + if(hOldOffBmp) NtGdiSelectBitmap(hDestDC, hOldOffBmp); + NtGdiDeleteObjectApp(hDestDC); + if(hOffBmp) NtGdiDeleteObjectApp(hOffBmp); + } + + return Ret; } /* Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c [iso-8859-1] Sun Aug 15 14:51:39 2010 @@ -953,8 +953,6 @@ if (resBitmap) { IntSetBitmapBits(resBitmap, Bitmap->SurfObj.cjBits, Bitmap->SurfObj.pvBits); - resBitmap->ppal = Bitmap->ppal; - GDIOBJ_IncrementShareCount((POBJ)Bitmap->ppal); SURFACE_UnlockSurface(resBitmap); } else
14 years, 4 months
1
0
0
0
[dreimer] 48552: Preparations for GCC 4.5.1 mingw-w64 and RosBE Version 1.6. Not working yet.
by dreimer@svn.reactos.org
Author: dreimer Date: Sun Aug 15 12:14:41 2010 New Revision: 48552 URL:
http://svn.reactos.org/svn/reactos?rev=48552&view=rev
Log: Preparations for GCC 4.5.1 mingw-w64 and RosBE Version 1.6. Not working yet. Modified: trunk/tools/RosBE/RosBE-Windows/Powershell/RosBE.ps1 trunk/tools/RosBE/RosBE-Windows/Root/ChangeLog.txt trunk/tools/RosBE/RosBE-Windows/Root/LICENSE.txt trunk/tools/RosBE/RosBE-Windows/Root/README.odt trunk/tools/RosBE/RosBE-Windows/Root/RosBE.cmd trunk/tools/RosBE/RosBE-Windows/RosBE.nsi trunk/tools/RosBE/RosBE-Windows/RosBE64.nsi trunk/tools/RosBE/Tools/makefile Modified: trunk/tools/RosBE/RosBE-Windows/Powershell/RosBE.ps1 URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Powershe…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/Powershell/RosBE.ps1 [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/Powershell/RosBE.ps1 [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -53,7 +53,7 @@ $global:0 = $myInvocation.MyCommand.Definition $global:_ROSBE_BASEDIR = [System.IO.Path]::GetDirectoryName($0) $global:_ROSBE_PREFIX = $null -$global:_ROSBE_VERSION = "1.5.1" +$global:_ROSBE_VERSION = "1.6" $global:_ROSBE_ROSSOURCEDIR = "$pwd" $global:_ROSBE_SHOWTIME = 1 $global:_ROSBE_WRITELOG = 1 @@ -205,7 +205,7 @@ clear-host "*******************************************************************************" "* *" -"* ReactOS Build Environment $_ROSBE_VERSION *" +"* ReactOS Build Environment $_ROSBE_VERSION *" "* *" "*******************************************************************************" "" Modified: trunk/tools/RosBE/RosBE-Windows/Root/ChangeLog.txt URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Root/Cha…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/Root/ChangeLog.txt [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/Root/ChangeLog.txt [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -1,3 +1,19 @@ +*** Aug XXth, 2010 - RosBE 1.6 Released + +- Updated Binutils to 2.20.51-20100801 (snapshot) (Daniel Reimer) +- Updated GCC to 4.5.1 (Daniel Reimer) + * gmp 5.0.1 + * mpfr 3.0.0 + * mpc 0.8.2 + * MinGW-w64 Runtime 20100730 +- Updated NASM to 2.08.02 (Daniel Reimer) +- Updated YASM to 1.0.1 (Daniel Reimer) +- Updated SVN to 1.6.12 (Daniel Reimer) +- Bug 5426 resolved (Adam Kachwalla) +- Cleanup the options tool (Christoph von Wittich) +- Add Support for the cmake bringup branch. Just install cmake and type make inside the branch (Daniel Reimer) +- Renamed make back to mingw32-make to make cmake happy (Daniel Reimer) + *** May 19th, 2010 - RosBE 1.5.1.1 Released - fix a bug in ssvn batch version which always ran through the update function even if the 1st param was crap. (Crocodile) Modified: trunk/tools/RosBE/RosBE-Windows/Root/LICENSE.txt URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Root/LIC…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/Root/LICENSE.txt [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/Root/LICENSE.txt [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -1,4 +1,4 @@ -ReactOS Build Environment v1.5.1.1 +ReactOS Build Environment v1.6 Various parts of the ReactOS Build Environment are under different license's, the license's are as follows. (The complete text for each license is included in this document excluding Subversion) Modified: trunk/tools/RosBE/RosBE-Windows/Root/README.odt URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Root/REA…
============================================================================== Binary files - no diff available. Modified: trunk/tools/RosBE/RosBE-Windows/Root/RosBE.cmd URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Root/Ros…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/Root/RosBE.cmd [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/Root/RosBE.cmd [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -30,7 +30,7 @@ set _ROSBE_BASEDIR=%~dp0 set _ROSBE_BASEDIR=%_ROSBE_BASEDIR:~0,-1% -set _ROSBE_VERSION=1.5.1 +set _ROSBE_VERSION=1.6 set _ROSBE_ROSSOURCEDIR=%CD% set _ROSBE_SHOWTIME=1 set _ROSBE_WRITELOG=1 @@ -91,7 +91,7 @@ cls echo ******************************************************************************* echo * * -echo * ReactOS Build Environment %_ROSBE_VERSION% * +echo * ReactOS Build Environment %_ROSBE_VERSION% * echo * * echo ******************************************************************************* echo. Modified: trunk/tools/RosBE/RosBE-Windows/RosBE.nsi URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/RosBE.ns…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/RosBE.nsi [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/RosBE.nsi [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -1,5 +1,5 @@ !define PRODUCT_NAME "ReactOS Build Environment for Windows" -!define PRODUCT_VERSION "1.5.1.1" +!define PRODUCT_VERSION "1.6" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\RosBE.cmd" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKCU" @@ -17,7 +17,7 @@ ;; ;; Add version/product information metadata to the installation file. ;; -VIAddVersionKey /LANG=1033 "FileVersion" "1.5.1.1" +VIAddVersionKey /LANG=1033 "FileVersion" "1.6.0.0" VIAddVersionKey /LANG=1033 "ProductVersion" "${PRODUCT_VERSION}" VIAddVersionKey /LANG=1033 "ProductName" "${PRODUCT_NAME}" VIAddVersionKey /LANG=1033 "Comments" "This installer was written by Peter Ward and Daniel Reimer using Nullsoft Scriptable Install System (
http://nsis.sourceforge.net/
)" @@ -25,7 +25,7 @@ VIAddVersionKey /LANG=1033 "LegalTrademarks" "Copyright © 2010 ReactOS Team" VIAddVersionKey /LANG=1033 "LegalCopyright" "Copyright © 2010 ReactOS Team" VIAddVersionKey /LANG=1033 "FileDescription" "${PRODUCT_NAME} Setup" -VIProductVersion "1.5.1.1" +VIProductVersion "1.6.0.0" CRCCheck force SetDatablockOptimize on @@ -144,7 +144,7 @@ File /r Components\Tools\getincludes.exe File /r Components\Tools\rquote.exe File /r Components\Tools\tee.exe - File /r Components\Tools\make.exe + File /r Components\Tools\mingw32-make.exe File /r Components\Tools\libintl3.dll File /r Components\Tools\libiconv2.dll File /r Components\Tools\regex2.dll Modified: trunk/tools/RosBE/RosBE-Windows/RosBE64.nsi URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/RosBE64.…
============================================================================== --- trunk/tools/RosBE/RosBE-Windows/RosBE64.nsi [iso-8859-1] (original) +++ trunk/tools/RosBE/RosBE-Windows/RosBE64.nsi [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -1,5 +1,5 @@ !define PRODUCT_NAME "ReactOS Build Environment for Windows - 64 Bit Target Compiler" -!define PRODUCT_VERSION "1.4" +!define PRODUCT_VERSION "1.4.1" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\RosBE.cmd" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKCU" @@ -17,7 +17,7 @@ ;; ;; Add version/product information metadata to the installation file. ;; -VIAddVersionKey /LANG=1033 "FileVersion" "1.4.0.0" +VIAddVersionKey /LANG=1033 "FileVersion" "1.4.1.0" VIAddVersionKey /LANG=1033 "ProductVersion" "${PRODUCT_VERSION}" VIAddVersionKey /LANG=1033 "ProductName" "${PRODUCT_NAME}" VIAddVersionKey /LANG=1033 "Comments" "This installer was written by Peter Ward and Daniel Reimer using Nullsoft Scriptable Install System (
http://nsis.sourceforge.net/
)" @@ -25,7 +25,7 @@ VIAddVersionKey /LANG=1033 "LegalTrademarks" "Copyright © 2010 ReactOS Team" VIAddVersionKey /LANG=1033 "LegalCopyright" "Copyright © 2010 ReactOS Team" VIAddVersionKey /LANG=1033 "FileDescription" "${PRODUCT_NAME} Setup" -VIProductVersion "1.4.0.0" +VIProductVersion "1.4.1.0" CRCCheck force SetDatablockOptimize on Modified: trunk/tools/RosBE/Tools/makefile URL:
http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/Tools/makefile?rev=485…
============================================================================== --- trunk/tools/RosBE/Tools/makefile [iso-8859-1] (original) +++ trunk/tools/RosBE/Tools/makefile [iso-8859-1] Sun Aug 15 12:14:41 2010 @@ -11,11 +11,16 @@ RM := del /f SUFFIX := .exe else - # Unix host - RM := rm -f - SUFFIX := + ifeq ($(word 1,$(shell gcc -dumpmachine)),i686-w64-mingw32) + # Windows host + RM := del /f + SUFFIX := .exe + else + # Unix host + RM := rm -f + SUFFIX := + endif endif - all: cpucount scut getincludes
14 years, 4 months
1
0
0
0
← Newer
1
...
9
10
11
12
13
14
15
...
29
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Results per page:
10
25
50
100
200