correction of the scrooling problems==> message to the thread is bad
This commit is contained in:
parent
f5147fa4a5
commit
62852ff7c9
@ -336,6 +336,7 @@ void EWOL_ThreadEventShow(void)
|
||||
|
||||
void EWOL_ThreadEventHasJustDisplay(void)
|
||||
{
|
||||
ewol::threadMsg::SendMessage(androidJniMsg, THREAD_JUST_DISPLAY, ewol::threadMsg::MSG_PRIO_REAL_TIME);
|
||||
ewol::threadMsg::SendDisplayDone(androidJniMsg);
|
||||
//ewol::threadMsg::SendMessage(androidJniMsg, THREAD_JUST_DISPLAY, ewol::threadMsg::MSG_PRIO_REAL_TIME);
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,6 @@ namespace guiAbstraction
|
||||
void SendKeyboardEventMove(bool isDown, ewol::eventKbMoveType_te &keyInput);
|
||||
};
|
||||
|
||||
int64_t GetCurrentTime(void);
|
||||
|
||||
//!< must be define in CPP by the application ...
|
||||
void APP_Init(void);
|
||||
|
@ -57,6 +57,7 @@ namespace ewol {
|
||||
bool IsSetInsert(void);
|
||||
};
|
||||
|
||||
int64_t GetCurrentTime(void);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -83,6 +83,19 @@ bool ewol::threadMsg::WaitMessage(ewol::threadMsg::threadMsg_ts& messageData, ew
|
||||
for (int32_t iii=0; MSG_PRIO_NUMBER>iii; iii++) {
|
||||
if (0 < messageData.nbMessages[iii]) {
|
||||
// find a message :
|
||||
if (false == messageData.listOfMessages[iii][0].isActive) {
|
||||
EWOL_ERROR( "an error occured ==> bad case ...");
|
||||
data.isActive = false;
|
||||
data.type = 0;
|
||||
data.data[0] = '\0';
|
||||
} else {
|
||||
data = messageData.listOfMessages[iii][0];
|
||||
messageData.listOfMessages[iii][0].isActive = false;
|
||||
}
|
||||
memmove(&messageData.listOfMessages[iii][0], &messageData.listOfMessages[iii][1], (NUMBER_OF_ELEMENT_IN_THE_FIFO-1)*sizeof(ewol::threadMsg::threadMsgContent_ts) );
|
||||
|
||||
messageData.listOfMessages[iii][NUMBER_OF_ELEMENT_IN_THE_FIFO-1].isActive = false;
|
||||
/*
|
||||
for (int32_t jjj=0; NUMBER_OF_ELEMENT_IN_THE_FIFO>jjj; jjj++) {
|
||||
if (true == messageData.listOfMessages[iii][jjj].isActive) {
|
||||
// copy the data :
|
||||
@ -91,6 +104,7 @@ bool ewol::threadMsg::WaitMessage(ewol::threadMsg::threadMsg_ts& messageData, ew
|
||||
messageData.listOfMessages[iii][jjj].isActive = false;
|
||||
}
|
||||
}
|
||||
*/
|
||||
// decrement the number of message :
|
||||
messageData.nbMessages[iii]--;
|
||||
if (0>messageData.nbMessages[iii]) {
|
||||
@ -166,4 +180,7 @@ int32_t ewol::threadMsg::WaitingMessage(threadMsg_ts& messageData)
|
||||
return nbMessage;
|
||||
}
|
||||
|
||||
void ewol::threadMsg::SendDisplayDone(threadMsg_ts& messageData)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ namespace ewol {
|
||||
bool isInit;
|
||||
pthread_mutex_t mutex;
|
||||
pthread_cond_t condition;
|
||||
//etk::VectorType<threadMsgContent_ts>
|
||||
threadMsgContent_ts listOfMessages[MSG_PRIO_NUMBER][NUMBER_OF_ELEMENT_IN_THE_FIFO];
|
||||
int32_t nbMessages[MSG_PRIO_NUMBER];
|
||||
bool displayHasDone;
|
||||
@ -63,6 +64,7 @@ namespace ewol {
|
||||
bool WaitMessage(threadMsg_ts& messageData, threadMsgContent_ts &data);
|
||||
int32_t WaitingMessage(threadMsg_ts& messageData);
|
||||
bool SendMessage(threadMsg_ts& messageData, uint32_t type, msgPriority_te prio = MSG_PRIO_NONE, void * data = NULL, uint32_t size = 0);
|
||||
void SendDisplayDone(threadMsg_ts& messageData);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -68,15 +68,18 @@ bool ewol::WidgetScrooled::OnEventInput(int32_t IdInput, ewol::eventInputType_te
|
||||
{
|
||||
#ifdef __MODE__Touch
|
||||
if (1 == IdInput) {
|
||||
EWOL_VERBOSE("event 1 << " << (int32_t)typeEvent << "(" << x << "," << y << ")");
|
||||
x -= m_origin.x;
|
||||
y -= m_origin.y;
|
||||
if (ewol::EVENT_INPUT_TYPE_DOWN == typeEvent) {
|
||||
m_highSpeedMode = ewol::SCROLL_INIT;
|
||||
m_highSpeedStartPos.x = x;
|
||||
m_highSpeedStartPos.y = y;
|
||||
EWOL_VERBOSE("SCROOL ==> INIT");
|
||||
return true;
|
||||
} else if (ewol::EVENT_INPUT_TYPE_UP == typeEvent) {
|
||||
m_highSpeedMode = ewol::SCROLL_DISABLE;
|
||||
EWOL_VERBOSE("SCROOL ==> DISABLE");
|
||||
MarkToReedraw();
|
||||
return true;
|
||||
} else if (ewol::SCROLL_INIT==m_highSpeedMode && ewol::EVENT_INPUT_TYPE_MOVE == typeEvent) {
|
||||
@ -86,6 +89,7 @@ bool ewol::WidgetScrooled::OnEventInput(int32_t IdInput, ewol::eventInputType_te
|
||||
// the scrooling can start :
|
||||
// select the direction :
|
||||
m_highSpeedMode = ewol::SCROLL_ENABLE;
|
||||
EWOL_VERBOSE("SCROOL ==> ENABLE");
|
||||
MarkToReedraw();
|
||||
}
|
||||
return true;
|
||||
@ -99,11 +103,13 @@ bool ewol::WidgetScrooled::OnEventInput(int32_t IdInput, ewol::eventInputType_te
|
||||
m_originScrooled.y = etk_min(m_originScrooled.y, m_maxSize.y);
|
||||
m_highSpeedStartPos.x = x;
|
||||
m_highSpeedStartPos.y = y;
|
||||
EWOL_VERBOSE("SCROOL ==> MOVE (" << m_originScrooled.x << "," << m_originScrooled.y << ")");
|
||||
MarkToReedraw();
|
||||
return true;
|
||||
}
|
||||
} else if (ewol::SCROLL_DISABLE!=m_highSpeedMode && ewol::EVENT_INPUT_TYPE_LEAVE == typeEvent) {
|
||||
m_highSpeedMode = ewol::SCROLL_DISABLE;
|
||||
EWOL_VERBOSE("SCROOL ==> DISABLE");
|
||||
MarkToReedraw();
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user