Hi,
> +
> + /* The allowable IDs are between IDOK (0) and IDCONTINUE (11)
> inclusive */
> + if (wBtn >= IDCONTINUE)
> + return NULL;
> +
> + LoadStringW(User32Instance, wBtn, (LPWSTR)&btnStr, 0);
> + return btnStr;
If IDCONTINUE is inclusive then the check in the next line should be >,
shouldn't it?
Best regards,
Michael
Mixing formatting changes, changes that should and changes that
shouldn't affect behavior, and making indentation inconsistent in the
progress is my favorite.
:\
On 2015-11-19 00:46, hbelusca(a)svn.reactos.org wrote:
> Author: hbelusca
> Date: Wed Nov 18 23:46:38 2015
> New Revision: 69935
>
> URL: http://svn.reactos.org/svn/reactos?rev=69935&view=rev
> Log:
> [USER32]
> MessageBoxIndirect fixes by Carlo Bramini:
> - Implemented loading of text and caption if they are detected as resource IDs.
> - Use direct resource string pointers with LoadStringW and use the returned string length.
> - Dramatically improve the implementation of ID and resource string assignments, by using a little look up table. This removes some ugly, difficult to maintain copy-paste code.
> - Fix the scaling of logical coordinates by making it aware of rounding, i.e. the size of the controls is now calculated correctly.
> CORE-10352 #resolve #comment Thank you for the patch! :D
Hi all,
We suffered from several Infrastructure problems in one of our
datacenters today, with the cause that multiple servers were temporarily
unreachable.
All problems should be finally fixed now though. If you still encounter
related problems, please reply to my mail.
Cheers,
Colin
In fact in this case it wouldn't make a difference, since the bool would
be converted to a LONG. But using TRUE/FALSE seems to be appropriate here.
Am 22.10.2015 um 19:37 schrieb gedmurphy(a)svn.reactos.org:
> Author: gedmurphy
> Date: Thu Oct 22 17:37:51 2015
> New Revision: 69650
>
> URL: http://svn.reactos.org/svn/reactos?rev=69650&view=rev
> Log:
> The c++ bool is 1 byte, not 4. Thanks Thomas
>
> Modified:
> trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
> trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h
>
> Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/M…
> ==============================================================================
> --- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp [iso-8859-1] (original)
> +++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp [iso-8859-1] Thu Oct 22 17:37:51 2015
> @@ -786,7 +786,7 @@
> // we set a timer to run in 500ms, which should leave enough time for all
> // the messages to come through. Wrap so we don't set multiple timers
> //
> - if (InterlockedCompareExchange((LONG *)&This->m_RefreshPending, true, false) == false)
> + if (InterlockedCompareExchange((LONG *)&This->m_RefreshPending, TRUE, FALSE) == FALSE)
> {
> SetTimer(hwnd, REFRESH_TIMER, 500, NULL);
> }
> @@ -807,7 +807,7 @@
> KillTimer(hwnd, REFRESH_TIMER);
>
> // Allow more change notifications
> - InterlockedExchange((LONG *)&This->m_RefreshPending, false);
> + InterlockedExchange((LONG *)&This->m_RefreshPending, FALSE);
> }
> break;
> }
>
> Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/M…
> ==============================================================================
> --- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] (original)
> +++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] Thu Oct 22 17:37:51 2015
> @@ -17,7 +17,7 @@
> HMENU m_hMenu;
> HMENU m_hActionMenu;
> int m_CmdShow;
> - bool m_RefreshPending;
> + BOOL m_RefreshPending;
>
> public:
> CDeviceManager(void);
>
>
>
Hi all,
After Victor's commit of so many files to our press-media repository,
I think we should establish some binding rules for it:
* There is no need to have a single file in X different formats in the
repository. Let's only keep it there in the best format. In particular,
that means:
Vector formats > Dynamic raster formats > Static raster formats
E.g.: AI/SVG > PSD/TIFF > PNG
The only exception to the rule can be made if one of the better formats
is highly proprietary (like AI). In that case, an additional SVG file or
(as a last resort) high-resolution PNG file may accompany it.
I don't consider PSD proprietary anymore, because almost every
Open-Source and Closed-Source graphics tool can work with them.
Totally uncompressed formats (like BMP) have no reason to stay in the
repository at all when better compressed formats (like PNG) are available.
I would make the only exception to e.g. the BIOS logo for the MiniPC,
because this one needs to be a BMP with special settings for technical
reasons.
* Only directly ReactOS-related media whose copyright is clarified
should go there. Third-party graphics can pose a serious legal trouble.
Additionally, Stock graphics can be found on many platforms. There is no
need to let press-media become a repository for this.
As long as there are no objections or additions, I would like Victor to
remove some redundant files according to these rules.
Cheers,
Colin
I am in traffic in the very centre of Moscow right now and most probably won't be on time for the meeting start.
Please start the meeting without me, and first topic of agenda which I would like you to start with is the release plans. I will join you ASAP
Regards,
Aleksey
Hello,
Let me invite you to the monthly status meeting taking place last
Thursday of a month, 29th of October, 19:00 UTC, as usual.
IRC service will only be started shortly before the meeting. Your
participation passwords and server address will be emailed to you
shortly before the meeting starts, and they are going to be different
once again as they are not stored in any database. Hopefully it's not
much of inconvenience.
Please send agenda proposals to me before the meeting.
Regards,
Aleksey Bragin
Hi all,
I will upgrade the Web Server Operating System upcoming Monday
(2015/10/19) around 11:00 CEST. During this time, the ReactOS Website
and related services will be temporarily offline.
As always, I will try to keep the downtime low :)
Cheers,
Colin
This is wrong, wrong, wrong.
1) The feature needs to be enabled on all processors, not just one. There's
a reason for that loop.
2) ValidKernelPte/Pde being marked global will make ALL kernel pages
global. This is probably not what you want.
Best regards,
Alex Ionescu
On Wed, Oct 14, 2015 at 12:33 PM, <sginsberg(a)svn.reactos.org> wrote:
> Author: sginsberg
> Date: Wed Oct 14 19:33:35 2015
> New Revision: 69528
>
> URL: http://svn.reactos.org/svn/reactos?rev=69528&view=rev
> Log:
> [NTOS]
> Add super-complicated handling of global pages to KeFlushCurrentTb (pretty
> much the same code which has been in HalpFlushTLB for the past ~6 years).
> This should be all that is required to make this feature work (everything
> else being in place already), and *seems* to work fine but is disabled
> under a switch until tested thoroughly.
>
> Global pages, an important optimization that allows for not flushing the
> whole x86 TLB every time CR3 is changed (typically on context switch to a
> new process, or during process attach/detach), relies on us doing extra
> work whenever we do alter a global page. This is likely where any bugs will
> have to be flushed out!
>
> Fixup Ki386EnableGlobalPage while we are at it -- disable/restore
> interrupts properly, and verify PGE-bit isn't set (nothing should have
> touched it before this routine, which is responsible for initializing it,
> so we shouldn't have to disable it). Fix, but disable, the CPU-sync spin as
> well as there should be no particular reason to do this for PGE-enabling
> during initialization (no other processor will be messing with PTEs at this
> stage, as compared to a call to KeFlushEntireTb).
>
> Everyone, repeat after me: Global pages are awesome!
>
> Modified:
> trunk/reactos/ntoskrnl/include/ntoskrnl.h
> trunk/reactos/ntoskrnl/ke/i386/cpu.c
> trunk/reactos/ntoskrnl/ke/i386/patpge.c
> trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c
>
> Modified: trunk/reactos/ntoskrnl/include/ntoskrnl.h
> URL:
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/ntoskrnl.…
>
> ==============================================================================
> --- trunk/reactos/ntoskrnl/include/ntoskrnl.h [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/include/ntoskrnl.h [iso-8859-1] Wed Oct 14
> 19:33:35 2015
> @@ -98,6 +98,14 @@
> #define ASSERT NT_ASSERT
> #endif
>
> +
> +//
> +// Switch for enabling global page support
> +//
> +
> +//#define _GLOBAL_PAGES_ARE_AWESOME_
> +
> +
> /* Internal Headers */
> #include "internal/ntoskrnl.h"
> #include "config.h"
>
> Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c
> URL:
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/cpu.c?rev…
>
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] Wed Oct 14
> 19:33:35 2015
> @@ -878,8 +878,37 @@
> NTAPI
> KeFlushCurrentTb(VOID)
> {
> +
> +#if !defined(_GLOBAL_PAGES_ARE_AWESOME_)
> +
> /* Flush the TLB by resetting CR3 */
> __writecr3(__readcr3());
> +
> +#else
> +
> + /* Check if global pages are enabled */
> + if (KeFeatureBits & KF_GLOBAL_PAGE)
> + {
> + ULONG Cr4;
> +
> + /* Disable PGE */
> + Cr4 = __readcr4() & ~CR4_PGE;
> + __writecr4(Cr4);
> +
> + /* Flush everything */
> + __writecr3(__readcr3());
> +
> + /* Re-enable PGE */
> + __writecr4(Cr4 | CR4_PGE);
> + }
> + else
> + {
> + /* No global pages, resetting CR3 is enough */
> + __writecr3(__readcr3());
> + }
> +
> +#endif
> +
> }
>
> VOID
>
> Modified: trunk/reactos/ntoskrnl/ke/i386/patpge.c
> URL:
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/patpge.c?…
>
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/patpge.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/patpge.c [iso-8859-1] Wed Oct 14
> 19:33:35 2015
> @@ -17,40 +17,41 @@
>
> /* FUNCTIONS
> *****************************************************************/
>
> +INIT_SECTION
> ULONG_PTR
> NTAPI
> -INIT_FUNCTION
> Ki386EnableGlobalPage(IN ULONG_PTR Context)
> {
> - PLONG Count = (PLONG)Context;
> - ULONG Cr4, Cr3;
> + //PLONG Count;
> +#if defined(_GLOBAL_PAGES_ARE_AWESOME_)
> + ULONG Cr4;
> +#endif
> + BOOLEAN Enable;
>
> /* Disable interrupts */
> - _disable();
> -
> - /* Decrease CPU Count and loop until it's reached 0 */
> - do {InterlockedDecrement(Count);} while (!*Count);
> -
> - /* Now check if this is the Boot CPU */
> - if (!KeGetPcr()->Number)
> - {
> - /* It is.FIXME: Patch KeFlushCurrentTb */
> - }
> -
> - /* Now get CR4 and make sure PGE is masked out */
> + Enable = KeDisableInterrupts();
> +
> + /* Spin until other processors are ready */
> + //Count = (PLONG)Context;
> + //InterlockedDecrement(Count);
> + //while (*Count) YieldProcessor();
> +
> +#if defined(_GLOBAL_PAGES_ARE_AWESOME_)
> +
> + /* Get CR4 and ensure global pages are disabled */
> Cr4 = __readcr4();
> - __writecr4(Cr4 & ~CR4_PGE);
> -
> - /* Flush the TLB */
> - Cr3 = __readcr3();
> - __writecr3(Cr3);
> + ASSERT(!(Cr4 & CR4_PGE));
> +
> + /* Reset CR3 to flush the TLB */
> + __writecr3(__readcr3());
>
> /* Now enable PGE */
> - DPRINT("Global page support detected but not yet taken advantage
> of\n");
> - //__writecr4(Cr4 | CR4_PGE);
> -
> - /* Restore interrupts */
> - _enable();
> + __writecr4(Cr4 | CR4_PGE);
> +
> +#endif
> +
> + /* Restore interrupts and return */
> + KeRestoreInterrupts(Enable);
> return 0;
> }
>
>
> Modified: trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c
> URL:
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/i386/init…
>
> ==============================================================================
> --- trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] Wed Oct 14
> 19:33:35 2015
> @@ -249,15 +249,18 @@
> PMMPFN Pfn1;
> ULONG Flags;
>
> +#if defined(_GLOBAL_PAGES_ARE_AWESOME_)
> +
> /* Check for global bit */
> -#if 0
> if (KeFeatureBits & KF_GLOBAL_PAGE)
> {
> /* Set it on the template PTE and PDE */
> ValidKernelPte.u.Hard.Global = TRUE;
> ValidKernelPde.u.Hard.Global = TRUE;
> }
> +
> #endif
> +
> /* Now templates are ready */
> TempPte = ValidKernelPte;
> TempPde = ValidKernelPde;
>
>
>