Piotr Caban : msvcrt: Improve CurrentScheduler::Get implementation.
Module: wine Branch: master Commit: 6ad1e9a95414534694f66a7fd751e91ab9c18a03 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6ad1e9a95414534694f66a7fd7... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Mon Apr 3 15:05:49 2017 +0200 msvcrt: Improve CurrentScheduler::Get implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvcrt/scheduler.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/dlls/msvcrt/scheduler.c b/dlls/msvcrt/scheduler.c index ff5cf6f..b405f39 100644 --- a/dlls/msvcrt/scheduler.c +++ b/dlls/msvcrt/scheduler.c @@ -196,6 +196,17 @@ static Scheduler* try_get_current_scheduler(void) return context->scheduler.scheduler; } +static Scheduler* get_current_scheduler(void) +{ + ExternalContextBase *context = (ExternalContextBase*)get_current_context(); + + if (context->context.vtable != &MSVCRT_ExternalContextBase_vtable) { + ERR("unknown context set\n"); + return NULL; + } + return context->scheduler.scheduler; +} + /* ?CurrentContext(a)Context@Concurrency@@SAPAV12(a)XZ */ /* ?CurrentContext(a)Context@Concurrency@@SAPEAV12(a)XZ */ Context* __cdecl Context_CurrentContext(void) @@ -867,22 +878,8 @@ static void create_default_scheduler(void) /* ?Get(a)CurrentScheduler@Concurrency@@SAPEAVScheduler(a)2@XZ */ Scheduler* __cdecl CurrentScheduler_Get(void) { - ExternalContextBase *context = (ExternalContextBase*)get_current_context(); - TRACE("()\n"); - - if(context->context.vtable != &MSVCRT_ExternalContextBase_vtable) { - ERR("unknown context set\n"); - return NULL; - } - - if(context->scheduler.scheduler) - return context->scheduler.scheduler; - - create_default_scheduler(); - context->scheduler.scheduler = &default_scheduler->scheduler; - call_Scheduler_Reference(&default_scheduler->scheduler); - return &default_scheduler->scheduler; + return get_current_scheduler(); } /* ?CreateScheduleGroup(a)CurrentScheduler@Concurrency@@SAPAVScheduleGroup(a)2@AAVlocation(a)2@@Z */
participants (1)
-
Alexandre Julliard