Russian Qt Forum
Май 28, 2024, 21:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: XML-RPC клиент для rTorrent  (Прочитано 22182 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #15 : Февраль 25, 2009, 16:49 »

Все, принял! Спасибки! Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
fuCtor
Гость
« Ответ #16 : Февраль 28, 2009, 19:06 »

"Мы строили строили и наконец построили" (с)

Вот что вышло:


Исходники пока не выкладываю, еще относительно сырая программа.
Записан
ритт
Гость
« Ответ #17 : Март 01, 2009, 18:21 »

ничО так, симпатишно.
ждём релиза
Записан
fuCtor
Гость
« Ответ #18 : Март 02, 2009, 20:00 »

Вот тут исходники можно взять Улыбающийся
http://ajieks.org.ru/index.php?post=470
Записан
spirit
Гость
« Ответ #19 : Март 02, 2009, 20:09 »

delete_completed нигде не определен. что-то с уишкой видать.
Записан
spirit
Гость
« Ответ #20 : Март 02, 2009, 20:14 »

еще краш при выходе нашел.
мессага в аттаче.
Записан
fuCtor
Гость
« Ответ #21 : Март 02, 2009, 20:58 »

delete_completed странно, ничего подобноо не писал... завтра гляну..

А краш так понял судя по сообщению возникает из-за того что сокет куда то пытается слать сообщения а приемника нет?
Отлаживал в студии 2008, там не было никаких сообщений, только код завершения 13A, но что значит не нашел.
Записан
spirit
Гость
« Ответ #22 : Март 02, 2009, 20:59 »

я собирал студией.
Записан
fuCtor
Гость
« Ответ #23 : Март 03, 2009, 15:54 »

Пытаюсь на выходе словить этот эксепшн. Не ловится Грустный прям мистика.
Записан
spirit
Гость
« Ответ #24 : Март 03, 2009, 16:07 »

в дебаге ловишь? могу видео записать.  Улыбающийся
Записан
fuCtor
Гость
« Ответ #25 : Март 03, 2009, 16:16 »

А если вот такие изменения внести в rtorrentio.cpp:
Код
C++ (Qt)
RTorrentIO::~RTorrentIO()
{
if(!--InstanceCount)
{
//terminate ();
quit();
//delete client;
}
}
 
Client * RTorrentIO::operator ->()
{
return client;
}
 
void RTorrentIO::run(){
if(InstanceCount == 1)
{
client = new Client(parent());
client->setHost(hostname,port,path);
}
exec();
delete client; //возможно лишнее т.к. точка останова сюда не попадала ни разу.
}
 

Будет вываливаться?
Записан
spirit
Гость
« Ответ #26 : Март 03, 2009, 16:21 »

ага, перестало валиться.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #27 : Март 03, 2009, 16:22 »

Цитировать
The child of a QObject must always be created in the thread where the parent was created.
You must ensure that all objects created in a thread are deleted before you delete the QThread.
This can be done easily by creating the objects on the stack in your run() implementation.

Ваш код:

Код
C++ (Qt)
void RTorrentIO::run(){
...
   client = new Client(parent());
...
   exec();
   delete client;
   client = 0;
}

Уберите parent().


Цитировать
delete client; //возможно лишнее т.к. точка останова сюда не попадала ни разу.

а вот это какраз и не лишнее. Этот код должен выполнится после завершения exec (завершение потока). Лишнее было в деструкторе. Перепешите его так:

Код
C++ (Qt)
RTorrentIO::~RTorrentIO()
{
if(!--InstanceCount)
{
quit();
wait();
}
}

Также настараживает вот этот код:

Код
C++ (Qt)
Client * RTorrentIO::operator ->()
{
return client;
}

и более того - InstanceCount. Т.е. экземпляр Client создается для пераого потока и используется для остальных??? Тут налицо неправильная работа с потоком
« Последнее редактирование: Март 03, 2009, 16:37 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
fuCtor
Гость
« Ответ #28 : Март 03, 2009, 16:27 »

ага, перестало валиться.

Цитировать
The child of a QObject must always be created in the thread where the parent was created.

Ваш код:

Код
C++ (Qt)
void RTorrentIO::run(){
...
   client = new Client(parent());
...
}

Ага спасибо, разобрался, конструктор в одном потоке был, а деструктор в другом. На ошибках учатся.
« Последнее редактирование: Март 03, 2009, 16:31 от fuCtor » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #29 : Март 03, 2009, 16:37 »

2 fuCtor: выложи полный код RTorrentIO
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 19.