comp.lang.ada
 help / color / mirror / Atom feed
From: George J <ivanov_george@list.ru>
Subject: Re: Win32. Task or CreateThread
Date: Thu, 4 Aug 2016 21:25:40 -0700 (PDT)
Date: 2016-08-04T21:25:40-07:00	[thread overview]
Message-ID: <1dde5cdf-f1a8-4e5d-8d7d-60c89c554f6a@googlegroups.com> (raw)
In-Reply-To: <nnqdsh$kh8$1@gioia.aioe.org>

> So if you want the task to report back to GTK in any way (e.g. by moving 
> the progress bar) you must do it by communicating with the task running 
> the main loop. You can find an example how do do this here:
> 
> http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm#1.1
> .......
> 
> -- 
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de

Hi All! I have a question for Gtk.Main.Routers, that i can't understand.
I have next:

type My_Record is
record
.......
end record

type My_Record_Access is access all My_Record;

Test_Record_Access : My_Record_Access;

package Cb_Request is new Gtk.Main.Router.Generic_Callback_Request(User_Data => My_Record);

   task type My_Task is  -- works well
      entry Start;
   end My_Task;

   task body My_Task is
   begin
      accept Start;

      Cb_Request.Request(Some_Proc'Access,Test_Record_Access); -- all ok

   end My_Task;


But I need to send parameter to discriminant like this 
.. in some proc 
Some_Task.Start(Test_Record_Access)

and decl:

   task type My_Task is  -- works bad
      entry Start(Rec_Acc:My_Record_Access);
   end My_Task;

   task body My_Task is
   begin
      accept Start(Rec_Acc:My_Record_Access) do
         Cb_Request.Request(Some_Proc'Access,Rec_Acc); -- "freezed"
      end Start;
   end My_Task;


-----------
I've debugged code and found:
...Gtk.Main.Routers(448)

procedure Request (Data : in out Request_Data'Class) is
   begin
      if Main = Current_Task then
         Service (Data);
      elsif Main = Null_Task_ID then
         Log
         (  GtkAda_Contributions_Domain,
            Log_Level_Critical,
            "No main task active" & Where ("Request")
         );
         raise Program_Error;
      else
         Gateway.Request_Service (Data, Standard.True);--<<---STOPPED HERE!!!!
      end if;
   end Request;

So I can understand, why it happened?can smb help with this!Thanks!


  parent reply	other threads:[~2016-08-05  4:25 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-02 14:38 Win32. Task or CreateThread George J
2016-08-02 15:22 ` Dmitry A. Kazakov
2016-08-02 16:39   ` George J
2016-08-03 17:31   ` George J
2016-08-03 19:43     ` Dmitry A. Kazakov
2016-08-04  2:42       ` George J
2016-08-05  4:25   ` George J [this message]
2016-08-05  6:15     ` George J
2016-08-05  6:17     ` Dmitry A. Kazakov
2016-08-05  6:48       ` George J
2016-08-03 20:31 ` Aurele
2016-08-04  2:41   ` George J
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox