Subversion Repositories tpanel

Rev

Rev 101 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 101 Rev 107
Line 24... Line 24...
24
#include <QtMultimedia/QMediaPlayer>
24
#include <QtMultimedia/QMediaPlayer>
25
#include <QtMultimediaWidgets/QVideoWidget>
25
#include <QtMultimediaWidgets/QVideoWidget>
26
#include "tobject.h"
26
#include "tobject.h"
27
#include "terror.h"
27
#include "terror.h"
28
 
28
 
-
 
29
using std::string;
-
 
30
 
-
 
31
std::mutex mutex_obj;
-
 
32
 
29
TObject::TObject()
33
TObject::TObject()
30
{
34
{
31
    DECL_TRACER("TObject::TObject()");
35
    DECL_TRACER("TObject::TObject()");
32
}
36
}
33
 
37
 
Line 60... Line 64...
60
 
64
 
61
void TObject::dropContent(OBJECT_t* obj)
65
void TObject::dropContent(OBJECT_t* obj)
62
{
66
{
63
    DECL_TRACER("TObject::dropContent(OBJECT_t* obj)");
67
    DECL_TRACER("TObject::dropContent(OBJECT_t* obj)");
64
 
68
 
-
 
69
    mutex_obj.lock();
-
 
70
 
65
    try
71
    try
66
    {
72
    {
67
        switch (obj->type)
73
        switch (obj->type)
68
        {
74
        {
69
            case OBJ_TEXT:
75
            case OBJ_TEXT:
70
            case OBJ_INPUT:
76
            case OBJ_INPUT:
71
                if (obj->object.multitext)
77
                if (obj->object.multitext)
72
                {
78
                {
73
    //                delete obj->object.text;
-
 
74
                    obj->object.multitext = nullptr;
79
                    obj->object.multitext = nullptr;
75
                }
80
                }
76
 
81
 
77
                if (obj->object.linetext)
82
                if (obj->object.linetext)
78
                    obj->object.linetext = nullptr;
83
                    obj->object.linetext = nullptr;
Line 81... Line 86...
81
            break;
86
            break;
82
 
87
 
83
            case OBJ_BUTTON:
88
            case OBJ_BUTTON:
84
                if (obj->object.label)
89
                if (obj->object.label)
85
                {
90
                {
86
    //                delete obj->object.label;
-
 
87
                    obj->object.label = nullptr;
91
                    obj->object.label = nullptr;
88
                }
92
                }
89
            break;
93
            break;
90
 
94
 
91
            case OBJ_PAGE:
95
            case OBJ_PAGE:
Line 115... Line 119...
115
    }
119
    }
116
    catch (std::exception& e)
120
    catch (std::exception& e)
117
    {
121
    {
118
        MSG_ERROR("Error freeing an object: " << e.what());
122
        MSG_ERROR("Error freeing an object: " << e.what());
119
    }
123
    }
-
 
124
 
-
 
125
    mutex_obj.unlock();
120
}
126
}
121
 
127
 
122
TObject::OBJECT_t *TObject::addObject()
128
TObject::OBJECT_t *TObject::addObject()
123
{
129
{
124
    DECL_TRACER("TObject::addObject()");
130
    DECL_TRACER("TObject::addObject()");
125
 
131
 
-
 
132
    mutex_obj.lock();
126
    OBJECT_t *obj = new OBJECT_t;
133
    OBJECT_t *obj = new OBJECT_t;
127
    obj->next = nullptr;
134
    obj->next = nullptr;
128
    obj->object.vwidget = nullptr;
135
    obj->object.vwidget = nullptr;
129
    obj->player = nullptr;
136
    obj->player = nullptr;
130
    obj->object.label = nullptr;
137
    obj->object.label = nullptr;
Line 142... Line 149...
142
            p = p->next;
149
            p = p->next;
143
 
150
 
144
        p->next = obj;
151
        p->next = obj;
145
    }
152
    }
146
 
153
 
-
 
154
    mutex_obj.unlock();
147
    return obj;
155
    return obj;
148
}
156
}
149
 
157
 
150
TObject::OBJECT_t *TObject::findObject(ulong handle)
158
TObject::OBJECT_t *TObject::findObject(ulong handle)
151
{
159
{
Line 260... Line 268...
260
 
268
 
261
void TObject::removeObject(ulong handle)
269
void TObject::removeObject(ulong handle)
262
{
270
{
263
    DECL_TRACER("TObject::removeObject(ulong handle)");
271
    DECL_TRACER("TObject::removeObject(ulong handle)");
264
 
272
 
-
 
273
    mutex_obj.lock();
265
    OBJECT_t *obj = mObject;
274
    OBJECT_t *obj = mObject;
266
    OBJECT_t *prev = nullptr;
275
    OBJECT_t *prev = nullptr;
267
 
276
 
268
    while (obj)
277
    while (obj)
269
    {
278
    {
Line 278... Line 287...
278
            {
287
            {
279
                prev->next = obj->next;
288
                prev->next = obj->next;
280
                delete obj;
289
                delete obj;
281
            }
290
            }
282
 
291
 
-
 
292
            mutex_obj.unlock();
283
            return;
293
            return;
284
        }
294
        }
285
 
295
 
286
        prev = obj;
296
        prev = obj;
287
        obj = obj->next;
297
        obj = obj->next;
288
    }
298
    }
-
 
299
 
-
 
300
    mutex_obj.unlock();
289
}
301
}
290
 
302
 
291
void TObject::removeAllChilds(ulong handle)
303
void TObject::removeAllChilds(ulong handle)
292
{
304
{
293
    DECL_TRACER("TObject::removeAllChilds(ulong handle)");
305
    DECL_TRACER("TObject::removeAllChilds(ulong handle)");
294
 
306
 
-
 
307
    mutex_obj.lock();
295
    OBJECT_t *obj = mObject;
308
    OBJECT_t *obj = mObject;
296
    OBJECT_t *prev = nullptr;
309
    OBJECT_t *prev = nullptr;
297
 
310
 
298
    while (obj)
311
    while (obj)
299
    {
312
    {
Line 315... Line 328...
315
        }
328
        }
316
 
329
 
317
        prev = obj;
330
        prev = obj;
318
        obj = obj->next;
331
        obj = obj->next;
319
    }
332
    }
-
 
333
 
-
 
334
    mutex_obj.unlock();
-
 
335
}
-
 
336
 
-
 
337
void TObject::cleanMarked()
-
 
338
{
-
 
339
    DECL_TRACER("TObject::cleanMarked()");
-
 
340
 
-
 
341
    mutex_obj.lock();
-
 
342
    OBJECT_t *obj = mObject;
-
 
343
    OBJECT_t *prev = nullptr;
-
 
344
 
-
 
345
    while (obj)
-
 
346
    {
-
 
347
        if (obj->remove && (!obj->animation || obj->animation->state() != QAbstractAnimation::Running))
-
 
348
        {
-
 
349
            if (obj->type == OBJ_SUBPAGE && obj->object.widget)
-
 
350
                delete obj->object.widget;
-
 
351
 
-
 
352
            if (!prev)
-
 
353
            {
-
 
354
                mObject = obj->next;
-
 
355
                delete obj;
-
 
356
                obj = mObject;
-
 
357
                continue;
-
 
358
            }
-
 
359
            else
-
 
360
            {
-
 
361
                prev->next = obj->next;
-
 
362
                delete obj;
-
 
363
                obj = prev;
-
 
364
            }
-
 
365
        }
-
 
366
 
-
 
367
        prev = obj;
-
 
368
        obj = obj->next;
-
 
369
    }
-
 
370
 
-
 
371
    mutex_obj.unlock();
320
}
372
}
321
 
373
 
322
std::string TObject::objectToString(TObject::OBJECT_TYPE o)
374
string TObject::objectToString(TObject::OBJECT_TYPE o)
323
{
375
{
324
    switch(o)
376
    switch(o)
325
    {
377
    {
326
        case OBJ_BUTTON:  return "BUTTON"; break;
378
        case OBJ_BUTTON:  return "BUTTON"; break;
327
        case OBJ_INPUT:   return "INPUT"; break;
379
        case OBJ_INPUT:   return "INPUT"; break;
Line 330... Line 382...
330
        case OBJ_SUBPAGE: return "SUBPAGE"; break;
382
        case OBJ_SUBPAGE: return "SUBPAGE"; break;
331
        case OBJ_TEXT:    return "TEXT"; break;
383
        case OBJ_TEXT:    return "TEXT"; break;
332
        case OBJ_VIDEO:   return "VIDEO"; break;
384
        case OBJ_VIDEO:   return "VIDEO"; break;
333
    }
385
    }
334
 
386
 
335
    return std::string();   // Should not happen but is needed to satisfy the compiler.
387
    return string();   // Should not happen but is needed to satisfy the compiler.
336
}
388
}