From a9ae5acec87af10964f9eb52f4ed86ea73ff79b6 Mon Sep 17 00:00:00 2001 From: "yeongtaik.byeon" Date: Fri, 30 Nov 2012 01:08:39 +0900 Subject: [PATCH] [Title] thread page [Desc.] sync chart added & design updateed [Issue] redmine #5322 #7167 --- .../Images/timeline_left_bg_normal.png | Bin 0 -> 2863 bytes .../Images/timeline_left_bg_selected.png | Bin 0 -> 2865 bytes .../Images/timeline_left_child_bg_normal.png | Bin 0 -> 2791 bytes .../Images/timeline_left_child_bg_selected.png | Bin 0 -> 2805 bytes .../Images/timeline_right_child_bg_normal.png | Bin 0 -> 2794 bytes .../chartBoard/DACustomChartBoardItemCell.java | 57 +++--- .../widgets/helper/ColorResources.java | 2 - .../widgets/helper/ImageResources.java | 4 + .../dynamic-analyzer/xml/synchronization.logc | 120 +++++++++++ .../dynamic-analyzer/xml/thread.logc | 1 - .../logparser/LogCenterConstants.java | 26 +++ .../tizen/dynamicanalyzer/nl/ThreadPageLabels.java | 11 + .../dynamicanalyzer/nl/ThreadPageLabels.properties | 13 +- .../dynamicanalyzer/resources/ImageResources.java | 1 + .../ui/basechart/table/ThreadAPIListTable.java | 10 +- .../ui/thread/ThreadAPIListView.java | 8 +- .../ui/thread/ThreadDetailInfoView.java | 8 +- .../dynamicanalyzer/ui/thread/ThreadPage.java | 9 +- .../dynamicanalyzer/ui/thread/ThreadPageData.java | 104 ++++++++++ .../ui/thread/ThreadPageDataEvent.java | 48 +++++ .../ui/thread/ThreadPageSyncData.java | 99 +++++++++ .../ui/thread/ThreadPageSyncDataEvent.java | 87 ++++++++ .../ui/thread/ThreadPageThreadData.java | 177 +++++++--------- .../ui/thread/ThreadPageThreadDataEvent.java | 25 +-- .../ui/thread/ThreadPageThreadDataManager.java | 223 +++++++++++++++++---- .../black/img/timeline_right_child_bg_normal.png | Bin 0 -> 2794 bytes .../white/img/timeline_right_child_bg_normal.png | Bin 0 -> 2794 bytes 27 files changed, 816 insertions(+), 217 deletions(-) create mode 100644 org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_normal.png create mode 100644 org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_selected.png create mode 100644 org.tizen.dynamicanalyzer.widgets/Images/timeline_left_child_bg_normal.png create mode 100644 org.tizen.dynamicanalyzer.widgets/Images/timeline_left_child_bg_selected.png create mode 100644 org.tizen.dynamicanalyzer.widgets/Images/timeline_right_child_bg_normal.png create mode 100644 org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/xml/synchronization.logc create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataEvent.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncData.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncDataEvent.java create mode 100644 org.tizen.dynamicanalyzer/theme/black/img/timeline_right_child_bg_normal.png create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/timeline_right_child_bg_normal.png diff --git a/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_normal.png b/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..76b6ccb1000bb53be60612b92b070dc62c1ff71d GIT binary patch literal 2863 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 N002ovPDHLkV1iiIQzQTY literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_selected.png b/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_bg_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc03fe06d3a8c18011aa37323054c5bada0a8d7 GIT binary patch literal 2865 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 literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_child_bg_selected.png b/org.tizen.dynamicanalyzer.widgets/Images/timeline_left_child_bg_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccd59d6f271b1d877bf97acb0f9a0c4c06a4e7a GIT binary patch literal 2805 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf047O9 zK~yMHW00P-;Xe}t5R4K-ISg!mykuZH%Pzve^qrA;u*4+*?KlTbh-Irf00000NkvXX Hu0mjf#H2!w literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.widgets/Images/timeline_right_child_bg_normal.png b/org.tizen.dynamicanalyzer.widgets/Images/timeline_right_child_bg_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b16ca511b41e5f32dcceb90ee110d0205ea1443d GIT binary patch literal 2794 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf02@g} wK~yMHV>o`{(toC}U%xUiF#y3RF}T720GCPz>`w(EtDd literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoardItemCell.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoardItemCell.java index 06154a2..6e01498 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoardItemCell.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoardItemCell.java @@ -81,26 +81,18 @@ class DACustomChartBoardItemCell extends Composite { }); nameCell = new Canvas(this, SWT.NONE); + if (parent.getDepth() == 0) { + nameCell.setBackgroundImage(ImageResources.CHART_NAME_BG_NORMAL); + } else { + nameCell.setBackgroundImage(ImageResources.CHART_NAME_CHILD_BG_NORMAL); + } nameCell.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { Rectangle rect = ((Canvas) (e.widget)).getClientArea(); - if (parent.getDepth() == 0) { - if (false == isSelectCell()) { - e.gc.setForeground(ColorResources.CHART_NAME_BACK_START); // FIXME - e.gc.setBackground(ColorResources.CHART_NAME_BACK_END); // FIXME - } else { - e.gc.setForeground(ColorResources.CHART_NAME_SELECT_BACK_START); // FIXME - e.gc.setBackground(ColorResources.CHART_NAME_SELECT_BACK_END); // FIXME - } - } else { - e.gc.setForeground(ColorResources.CHART_NAME_CHILD_BACK); // FIXME - e.gc.setBackground(ColorResources.CHART_NAME_CHILD_BACK); - } - e.gc.fillGradientRectangle(rect.x, rect.y, rect.width, - rect.height, true); + e.gc.setForeground(ColorResources.BLACK); e.gc.setFont(FontResources.CHART_ITEM_NAME_FONT); drawNameString(e.gc, parent.getItemName(), rect.width / 2, @@ -161,8 +153,6 @@ class DACustomChartBoardItemCell extends Composite { ImageResources.TREE_FOLD, ImageResources.TREE_FOLD, ImageResources.TREE_FOLD, null, ImageResources.TREE_OPEN, ImageResources.TREE_OPEN); - childExpandButton - .setBackground(ColorResources.CHART_BOARD_ITEM_NAME_FOLD_BG); Rectangle rt = nameCell.getClientArea(); childExpandButton.setBounds(rt.x + DEFAULT_TOGGLE_BUTTON_SIZE - DEFAULT_TOGGLE_BUTTON_MARGIN, rt.height / 2 @@ -174,17 +164,13 @@ class DACustomChartBoardItemCell extends Composite { @Override public void handleClickEvent(DACustomButton button) { if (true == childExpandButton.isToggled()) { - childExpandButton.setImages( - ImageResources.TREE_FOLD, - ImageResources.TREE_OPEN, - ImageResources.TREE_OPEN, null); + parent.callbackSelect(); parent.callbackUnFold(); + nameCell.redraw(); } else { - childExpandButton.setImages( - ImageResources.TREE_FOLD, - ImageResources.TREE_FOLD, - ImageResources.TREE_FOLD, null); + parent.callbackSelect(); parent.callbackFold(); + nameCell.redraw(); } } }); @@ -199,14 +185,14 @@ class DACustomChartBoardItemCell extends Composite { return; } Point allp = gc.textExtent(name, SWT.DRAW_DELIMITER); - + String[] temp = name.split("\n"); int lineLength = temp.length; - Point[] p = new Point[lineLength]; - + Point[] p = new Point[lineLength]; + int startY = pixcelY - allp.y / 2; - - for(int i=0; i + + 14 + synchronization + 17 + false + + Rid + ID + SeqNumber + APIName + Time + + Pid + Tid + InputParam + Return + PCAddr + + Error + InternalCall + CallerPCAddr + SyncVal + SyncType + + ApiType + Reserved + + INTEGER + INTEGER + INTEGER PRIMARY KEY NOT NULL + TEXT + INTEGER + + INTEGER + INTEGER + TEXT + TEXT + TEXT + + INTEGER + INTEGER + INTEGER + INTEGER + INTEGER + + INTEGER + TEXT + + 100 + 0 + 0 + 0 + 0 + + + 0 + 1 + 2 + 4 + 3 + + 13 + 14 + 12 + 11 + 9 + + 7 + 8 + 10 + 5 + 6 + + 15 + 16 + + + false + false + true + true + true + + true + true + true + true + false + + true + true + true + false + false + + false + false + + Row Id + ID + # + API name + Time + + Process id + Thread id + Input parm + Return + PC Addr + + Errno + Internal Call + Caller PC Address + Sync val + Sync type + + Api type + Reserved + \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/xml/thread.logc b/org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/xml/thread.logc index 0dde91f..460037b 100644 --- a/org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/xml/thread.logc +++ b/org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/xml/thread.logc @@ -77,7 +77,6 @@ 15 16 17 - 18 false diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java index 454c6e7..84f94de 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java @@ -42,6 +42,7 @@ public class LogCenterConstants { public static final int LOG_THREAD = 12; // public static final int LOG_SYSTEM = 12; public static final int LOG_CUSTOM_CHART = 13; + public static final int LOG_SYNC = 14; public static final int TYPE_CALLSTACK = 99; @@ -193,6 +194,31 @@ public class LogCenterConstants { public static final int CUSTOM_CHART_COLOR = 15; public static final int CUSTOM_CHART_VALUE = 16; public static final int CUSTOM_CHART_RESERVED = 17; + + /* synchronization log : 14 */ + public static final int SYNC_VAL_INDEX = 12; + public static final int SYNC_TYPE_INDEX = 13; + public static final int SYNC_API_TYPE_INDEX = 14; + + public static final int SYNC_TYPE_OSP_MUTEX = 0; + public static final int SYNC_TYPE_OSP_MONITOR = 1; + public static final int SYNC_TYPE_OSP_SEMAPHORE = 2; + public static final int SYNC_TYPE_PTHREAD_MUTEX = 3; + public static final int SYNC_TYPE_PTHREAD_COND_VARIABLE = 4; + public static final int SYNC_TYPE_PTHREAD_RWLOCK = 5; + public static final int SYNC_TYPE_PTHREAD_SPINLOCK = 6; + public static final int SYNC_TYPE_PTHREAD_BARRIER = 7; + + public static final int SYNC_API_TYPE_NEW = 0; + public static final int SYNC_API_TYPE_ACQUIRE_WAIT_START = 1; + public static final int SYNC_API_TYPE_ACQUIRE_WAIT_END = 2; + public static final int SYNC_API_TYPE_RELEASE = 3; + public static final int SYNC_API_TYPE_TRY_ACQUIRE = 4; + public static final int SYNC_API_TYPE_COND_WAIT_START = 5; + public static final int SYNC_API_TYPE_COND_WAIT_END = 6; + public static final int SYNC_API_TYPE_NOTIFY = 7; + public static final int SYNC_API_TYPE_NOTIFY_ALL = 8; + public static final int SYNC_API_TYPE_OTHER = 9; /* Common Column Size */ public static final int COMMON_COLUMN_SIZE_RID = 80; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.java index cf201f7..3d3995f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.java @@ -42,10 +42,21 @@ public class ThreadPageLabels extends NLS { public static String THREAD_ITEM_TYPE_OSP; public static String THREAD_ITEM_TYPE_PTHREAD; + public static String SYNC_TYPE_OSP_MUTEX; + public static String SYNC_TYPE_OSP_MONITOR; + public static String SYNC_TYPE_OSP_SEMAPHORE; + public static String SYNC_TYPE_PTHREAD_MUTEX; + public static String SYNC_TYPE_PTHREAD_COND_VARIABLE; + public static String SYNC_TYPE_PTHREAD_RWLOCK; + public static String SYNC_TYPE_PTHREAD_SPINLOCK; + public static String SYNC_TYPE_PTHREAD_BARRIER; + public static String THREAD_API_JOIN; public static String THREAD_CHART_NAME_PREFIX; public static String THREAD_CHART_NAME_POSTFIX; + + public static String THREAD_SYNC_CHART_SERIES_STATE; /* Thread API List view */ public static String THREAD_API_LIST_VEIW_TITLE; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.properties index 1c4df4a..53afaa5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ThreadPageLabels.properties @@ -10,11 +10,22 @@ THREAD_ITEM_TYPE_MAIN=main THREAD_ITEM_TYPE_OSP=OSP THREAD_ITEM_TYPE_PTHREAD=pthread +SYNC_TYPE_OSP_MUTEX=OSP mutex +SYNC_TYPE_OSP_MONITOR=OSP monitor +SYNC_TYPE_OSP_SEMAPHORE=OSP semaphore +SYNC_TYPE_PTHREAD_MUTEX=pthread mutex +SYNC_TYPE_PTHREAD_COND_VARIABLE=pthread \ncond variable +SYNC_TYPE_PTHREAD_RWLOCK=pthread rwlock +SYNC_TYPE_PTHREAD_SPINLOCK=pthread spinlock +SYNC_TYPE_PTHREAD_BARRIER=pthread barrier + THREAD_API_JOIN=Thread::Join THREAD_CHART_NAME_PREFIX=\n( THREAD_CHART_NAME_POSTFIX=) +THREAD_SYNC_CHART_SERIES_STATE=STATE + THREAD_API_LIST_VEIW_TITLE=Thread API List THREAD_API_LIST_VIEW_INDEX=# THREAD_API_LIST_VIEW_TIME=Time @@ -25,4 +36,4 @@ THREAD_API_LIST_VIEW_RETURN=Return value THREAD_API_LIST_VIEW_ERRNO=Error Code THREAD_DETAILS_TID=Thread ID : -THREAD_DETAILS_TTYPE=Thread type : \ No newline at end of file +THREAD_DETAILS_TTYPE=Type : \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java index 44cdbd5..3a10db4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java @@ -197,6 +197,7 @@ public class ImageResources { public static final Image ADD_ITEMS_BAR = getPngImage("AddItems"); //$NON-NLS-1$ public static final Image MIN_ITEMS = getPngImage("MinItems"); //$NON-NLS-1$ public static final Image BG_GRADIENT = getPngImage("timeline_right_bg_normal"); //$NON-NLS-1$ + public static final Image BG_CHILD_GRADIENT = getPngImage("timeline_right_child_bg_normal"); //$NON-NLS-1$ public static final Image TIMLINE_FULL = getPngImage("timeline_left_full_nor"); //$NON-NLS-1$ public static final Image TIMLINE_RESTORE = getPngImage("timeline_left_restore_nor"); //$NON-NLS-1$ public static final Image TIMLINE_SIZE_MIN_NORMAL = getPngImage("time_line_size_min_normal"); //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/basechart/table/ThreadAPIListTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/basechart/table/ThreadAPIListTable.java index cac6c3d..9ab14cd 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/basechart/table/ThreadAPIListTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/basechart/table/ThreadAPIListTable.java @@ -38,8 +38,8 @@ import org.tizen.dynamicanalyzer.error.ErrorCodeManager; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.model.TableInput; import org.tizen.dynamicanalyzer.ui.thread.ThreadAPIListView; -import org.tizen.dynamicanalyzer.ui.thread.ThreadPageThreadData; -import org.tizen.dynamicanalyzer.ui.thread.ThreadPageThreadDataEvent; +import org.tizen.dynamicanalyzer.ui.thread.ThreadPageData; +import org.tizen.dynamicanalyzer.ui.thread.ThreadPageDataEvent; import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite; import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat; import org.tizen.dynamicanalyzer.utils.Formatter; @@ -73,7 +73,7 @@ public class ThreadAPIListTable extends DATableComposite { if (!(view instanceof ThreadAPIListView)) { return null; } - ThreadPageThreadData data = view.getPageData(); + ThreadPageData data = view.getPageData(); if (null == data) { return null; @@ -81,9 +81,9 @@ public class ThreadAPIListTable extends DATableComposite { List input = new ArrayList(); - List contents = data.getContents(); + List contents = data.getContents(); - ThreadPageThreadDataEvent content; + ThreadPageDataEvent content; for (int i = 0; i < contents.size(); i++) { content = contents.get(i); List contentTemp = content.getContents(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java index bd5f2c8..d71a437 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java @@ -43,7 +43,7 @@ import org.tizen.dynamicanalyzer.ui.widgets.table.TableComparator; public class ThreadAPIListView extends DAView { public static final String ID = ThreadAPIListView.class.getName(); - private ThreadPageThreadData data; + private ThreadPageData data; int[] innerMaxWeight = { 0, 100 }; int[] outerMaxWeight = { 100, 0 }; @@ -108,8 +108,8 @@ public class ThreadAPIListView extends DAView { @Override public void updateView(DASelectionData data) { - this.data = (ThreadPageThreadData) data.getData(); - if (!(this.data instanceof ThreadPageThreadData)) { + this.data = (ThreadPageData) data.getData(); + if (!(this.data instanceof ThreadPageData)) { return; } tableComp.getTable().removeAll(); @@ -127,7 +127,7 @@ public class ThreadAPIListView extends DAView { data = null; } - public ThreadPageThreadData getPageData() { + public ThreadPageData getPageData() { return data; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java index d154dc0..e3b78f4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java @@ -108,8 +108,12 @@ public class ThreadDetailInfoView extends DAView { @Override public void updateView(DASelectionData data) { - ThreadPageThreadData item = (ThreadPageThreadData) data.getData(); - if (!(item instanceof ThreadPageThreadData)) { + String id = data.getViewId(); + if (!(id.equals(ThreadChartView.ID))) { + return; + } + ThreadPageData item = (ThreadPageData) data.getData(); + if (!(item instanceof ThreadPageData)) { return; } select = true; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPage.java index f5ad5bf..1491e98 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPage.java @@ -52,8 +52,6 @@ public class ThreadPage extends DAPageComposite { SashForm leftForm; SashForm rightForm; - // ThreadPageDataManager tManager = ThreadPageDataManager.getInstance(); - public ThreadPage(Composite parent, int style) { super(parent, style); name = AnalyzerLabels.COOLBAR_AREA_THREAD; @@ -80,7 +78,8 @@ public class ThreadPage extends DAPageComposite { { SnapshotView snapshotView = new SnapshotView( tabView.getContentComposite(), SWT.NONE, false); - snapshotView.setObservingViews(new String[] { ThreadAPIListView.ID }); + snapshotView + .setObservingViews(new String[] { ThreadAPIListView.ID }); tabView.addView(snapshotView); CallstackView callstack = new CallstackView( @@ -121,8 +120,4 @@ public class ThreadPage extends DAPageComposite { } }); } - - // public void updateLog(LogPackage logPack) { - // tManager.parsePageData(logPack); - // } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java new file mode 100644 index 0000000..4ab0073 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java @@ -0,0 +1,104 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * yeongtaik byeon + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ +package org.tizen.dynamicanalyzer.ui.thread; + +import java.util.ArrayList; +import java.util.List; + +import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart; +import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoardItem; + +public abstract class ThreadPageData { + private int tid; + private String type; + private String name; + protected DACustomChartBoardItem item; + protected List contents = new ArrayList(); + protected List contentsQueue = new ArrayList(); + protected DACustomChart chart; + protected boolean hasUpdate = false; + + public ThreadPageData(String type, String name, int tid) { + setType(type); + setName(name); + setTid(tid); + } + + public int getTid() { + return tid; + } + + public void setTid(int tid) { + this.tid = tid; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public DACustomChartBoardItem getItem() { + return item; + } + + public DACustomChart getChart() { + return chart; + } + + public void setChart(DACustomChart chart) { + this.chart = chart; + } + + protected void pushEvent(ThreadPageDataEvent event) { + contentsQueue.add(event); + hasUpdate = true; + } + + public void setHasUpdate() { + hasUpdate = true; + } + + + + public List getContents() { + return contents; + } + protected abstract void checkUpdate(); + public abstract void setItem(DACustomChartBoardItem item); + + protected abstract int createChartItem(ThreadPageDataEvent event); +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataEvent.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataEvent.java new file mode 100644 index 0000000..9c30bd1 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataEvent.java @@ -0,0 +1,48 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * yeongtaik byeon + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ +package org.tizen.dynamicanalyzer.ui.thread; + +import java.util.ArrayList; +import java.util.List; + +public abstract class ThreadPageDataEvent { + private List contents; + + public ThreadPageDataEvent(List contents) { + setContents(contents); + } + + public List getContents() { + if (null == contents) { + contents = new ArrayList(); + } + return contents; + } + + public void setContents(List contents) { + this.contents = contents; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncData.java new file mode 100644 index 0000000..79c4b93 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncData.java @@ -0,0 +1,99 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * yeongtaik byeon + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ +package org.tizen.dynamicanalyzer.ui.thread; + +import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; +import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; +import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeries; +import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeriesItem; +import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoardItem; + +public class ThreadPageSyncData extends ThreadPageData { + private DACustomChartSeries stateSeries; + + public ThreadPageSyncData(String type, String name, int tid) { + super(type, name, tid); + } + + public void setItem(DACustomChartBoardItem item) { + this.item = item; + setChart(item.getChart()); + stateSeries = chart + .getSeries(ThreadPageLabels.THREAD_SYNC_CHART_SERIES_STATE); + } + + private boolean isSyncApi(int apiType) { + switch (apiType) { + case LogCenterConstants.SYNC_API_TYPE_NEW: + case LogCenterConstants.SYNC_API_TYPE_ACQUIRE_WAIT_START: + case LogCenterConstants.SYNC_API_TYPE_RELEASE: + case LogCenterConstants.SYNC_API_TYPE_TRY_ACQUIRE: + case LogCenterConstants.SYNC_API_TYPE_COND_WAIT_START: + case LogCenterConstants.SYNC_API_TYPE_NOTIFY: + case LogCenterConstants.SYNC_API_TYPE_NOTIFY_ALL: + case LogCenterConstants.SYNC_API_TYPE_OTHER: + return true; + case LogCenterConstants.SYNC_API_TYPE_ACQUIRE_WAIT_END: + case LogCenterConstants.SYNC_API_TYPE_COND_WAIT_END: + return false; + default: + return false; + } + } + + protected void checkUpdate() { + if (false == hasUpdate) { + return; + } else { + hasUpdate = false; + } + int size = contentsQueue.size(); + if (size > 0) { + ThreadPageDataEvent event; + for (int i = 0; i < size; i++) { + event = contentsQueue.get(0); + if (true == (isSyncApi(createChartItem(event)))) { + contents.add(event); + } + + contentsQueue.remove(0); + } + chart.redraw(); + } + } + + protected int createChartItem(ThreadPageDataEvent event) { + DACustomChartSeriesItem seriesItem; + ThreadPageSyncDataEvent syncEvent = (ThreadPageSyncDataEvent) event; + if (!(syncEvent instanceof ThreadPageSyncDataEvent)) { + System.out.println("error : createChartItem"); + return -1; + } + seriesItem = new DACustomChartSeriesItem(syncEvent.getTime(), 0); + stateSeries.addSeriesItem(seriesItem); + return syncEvent.getApiType(); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncDataEvent.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncDataEvent.java new file mode 100644 index 0000000..5f55a2b --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageSyncDataEvent.java @@ -0,0 +1,87 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * yeongtaik byeon + * Juyoung Kim + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ +package org.tizen.dynamicanalyzer.ui.thread; + +import java.util.List; + +public class ThreadPageSyncDataEvent extends ThreadPageDataEvent { + private String syncVal; + private int tid = -1; + private int type = -1; + private int apiType = -1; + private double time = -1; + + public ThreadPageSyncDataEvent(String syncVal, int type, int apiType, + double time, int tid, List contents) { + super(contents); + setSyncVal(syncVal); + setType(type); + setApiType(apiType); + setTime(time); + setTid(tid); + setContents(contents); + } + + public int getTid() { + return tid; + } + + public void setTid(int tid) { + this.tid = tid; + } + + public int getApiType() { + return apiType; + } + + public void setApiType(int apiType) { + this.apiType = apiType; + } + + public double getTime() { + return time; + } + + public void setTime(double time) { + this.time = time; + } + + public String getSyncVal() { + return syncVal; + } + + public void setSyncVal(String syncVal) { + this.syncVal = syncVal; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadData.java index fa32add..e3834c3 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadData.java @@ -31,75 +31,26 @@ import java.util.List; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeries; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeriesItem; import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoardItem; -public class ThreadPageThreadData { - private ThreadPageThreadDataManager manager; - private int tid; - private String type; - private String name; - private String address; - private List contents = new ArrayList(); - private List contentsQueue = new ArrayList(); - private DACustomChartBoardItem item; - private DACustomChart chart; +public class ThreadPageThreadData extends ThreadPageData { + private List syncs = new ArrayList(); private DACustomChartSeries loadSeries; private DACustomChartSeries eventSeries; private DACustomChartSeries apiSeries; - public ThreadPageThreadData(ThreadPageThreadDataManager manager, - String type, int tid, String address) { - setManager(manager); - setType(type); - setName(String.valueOf(tid)+ThreadPageLabels.THREAD_CHART_NAME_PREFIX - + type + ThreadPageLabels.THREAD_CHART_NAME_POSTFIX); - setTid(tid); - setAddress(address); - } - - public ThreadPageThreadDataManager getManager() { - return manager; - } - - private void setManager(ThreadPageThreadDataManager manager) { - this.manager = manager; - } - - public int getTid() { - return tid; - } - - private void setTid(int tid) { - this.tid = tid; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; + public ThreadPageThreadData(String type, int tid) { + super(type, String.valueOf(tid) + + ThreadPageLabels.THREAD_CHART_NAME_PREFIX + type + + ThreadPageLabels.THREAD_CHART_NAME_POSTFIX, tid); } public void addDataEvent(ThreadPageThreadDataEvent dataEvent) { contentsQueue.add(dataEvent); } - public DACustomChartBoardItem getItem() { - return item; - } - public void setItem(DACustomChartBoardItem item) { this.item = item; chart = item.getChart(); @@ -109,19 +60,23 @@ public class ThreadPageThreadData { apiSeries = chart.getSeries(ThreadPageLabels.THREAD_CHART_SERIES_API); } - // private DACustomChartBoardItem - private int createChartItem(ThreadPageThreadDataEvent event) { + protected int createChartItem(ThreadPageDataEvent event) { int ret = -1; + ThreadPageThreadDataEvent threadEvent = (ThreadPageThreadDataEvent) event; + if (!(threadEvent instanceof ThreadPageThreadDataEvent)) { + System.out.println("error : createChartItem"); + return ret; + } DACustomChartSeriesItem seriesItem; - switch (event.getEventType()) { + switch (threadEvent.getEventType()) { case ThreadPageThreadDataEvent.TYPE_LOAD: ret = ThreadPageThreadDataEvent.TYPE_LOAD; if (null == loadSeries) { return ret; } - seriesItem = new DACustomChartSeriesItem(event.getTime(), - (double) event.getThreadType()); + seriesItem = new DACustomChartSeriesItem(threadEvent.getTime(), + (double) threadEvent.getThreadType()); loadSeries.addSeriesItem(seriesItem); break; @@ -131,28 +86,34 @@ public class ThreadPageThreadData { return ret; } - int eventApiType = event.getApiType(); + int eventApiType = threadEvent.getApiType(); if (eventApiType == LogCenterConstants.THREAD_API_TYPE_INTERNAL_START) { - seriesItem = new DACustomChartSeriesItem(event.getTime(), -1); - seriesItem.setBarWidth(event.getCallerTid()); + seriesItem = new DACustomChartSeriesItem(threadEvent.getTime(), + -1); + seriesItem.setBarWidth(threadEvent.getCallerTid()); } else if (eventApiType == LogCenterConstants.THREAD_API_TYPE_WAIT_END) { - if (event.getContents().get(LogCenterConstants.APINAME_INDEX) + if (threadEvent.getContents() + .get(LogCenterConstants.APINAME_INDEX) .equals(ThreadPageLabels.THREAD_API_JOIN)) { - seriesItem = new DACustomChartSeriesItem(event.getTime(), - -1); - seriesItem.setBarWidth(event.getCallerTid()); + seriesItem = new DACustomChartSeriesItem( + threadEvent.getTime(), -1); + seriesItem.setBarWidth(threadEvent.getCallerTid()); } else { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 0); + seriesItem = new DACustomChartSeriesItem( + threadEvent.getTime(), 0); } } else if (eventApiType == LogCenterConstants.THREAD_API_TYPE_INTERNAL_STOP) { - if (-1 != event.getCallerTid()) { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 1); - seriesItem.setBarWidth(event.getCallerTid()); + if (-1 != threadEvent.getCallerTid()) { + seriesItem = new DACustomChartSeriesItem( + threadEvent.getTime(), 1); + seriesItem.setBarWidth(threadEvent.getCallerTid()); } else { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 0); + seriesItem = new DACustomChartSeriesItem( + threadEvent.getTime(), 0); } } else { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 0); + seriesItem = new DACustomChartSeriesItem(threadEvent.getTime(), + 0); } eventSeries.addSeriesItem(seriesItem); @@ -162,14 +123,15 @@ public class ThreadPageThreadData { if (null == apiSeries) { return ret; } - List input = event.getContents(); + List input = threadEvent.getContents(); long errno = Long.parseLong(input .get(LogCenterConstants.ERROR_INDEX)); if (0 == errno) { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 0); + seriesItem = new DACustomChartSeriesItem(threadEvent.getTime(), + 0); } else { - seriesItem = new DACustomChartSeriesItem(event.getTime(), 0, - ColorResources.RED); + seriesItem = new DACustomChartSeriesItem(threadEvent.getTime(), + 0, ColorResources.RED); } apiSeries.addSeriesItem(seriesItem); @@ -177,47 +139,58 @@ public class ThreadPageThreadData { default: return ret; } - event.setChartItem(seriesItem); + threadEvent.setChartItem(seriesItem); return ret; } protected void checkUpdate() { + if (false == hasUpdate) { + return; + } else { + hasUpdate = false; + } + int size = contentsQueue.size(); if (size > 0) { + ThreadPageThreadDataEvent event; for (int i = 0; i < size; i++) { - ThreadPageThreadDataEvent event = contentsQueue.get(0); - if (ThreadPageThreadDataEvent.TYPE_API == createChartItem(event)) { - contents.add(event); - } else { - // do nothing + event = (ThreadPageThreadDataEvent) contentsQueue.get(0); + if ((event instanceof ThreadPageThreadDataEvent)) { + if (ThreadPageThreadDataEvent.TYPE_API == createChartItem(event)) { + contents.add(event); + } else { + // do nothing + } } contentsQueue.remove(0); } chart.redraw(); } - } - - public DACustomChart getChart() { - return chart; - } - - public void setChart(DACustomChart chart) { - this.chart = chart; - } - - protected void pushEvent(ThreadPageThreadDataEvent event) { - contentsQueue.add(event); - } - public List getContents() { - return contents; + size = syncs.size(); + if (size > 0) { + ThreadPageSyncData sync; + for (int i = 0; i < size; i++) { + sync = syncs.get(i); + sync.checkUpdate(); + } + } } - public String getType() { - return type; + protected void pushSync(ThreadPageSyncData sync) { + syncs.add(sync); + hasUpdate = true; } - public void setType(String type) { - this.type = type; + protected ThreadPageSyncData findSyncData(String syncVal) { + int size = syncs.size(); + ThreadPageSyncData sync; + for (int i = 0; i < size; i++) { + sync = syncs.get(i); + if (sync.getName().equals(syncVal)) { + return sync; + } + } + return null; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataEvent.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataEvent.java index d3ee744..923b650 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataEvent.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataEvent.java @@ -25,17 +25,15 @@ */ package org.tizen.dynamicanalyzer.ui.thread; -import java.util.ArrayList; import java.util.List; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeriesItem; -public class ThreadPageThreadDataEvent { +public class ThreadPageThreadDataEvent extends ThreadPageDataEvent { public static final int TYPE_API = 0; public static final int TYPE_EVENT = 1; public static final int TYPE_LOAD = 2; private ThreadPageThreadData data; - private List contents = new ArrayList(); private int eventType = -1; private int threadType = -1; private int apiType = -1; @@ -45,16 +43,14 @@ public class ThreadPageThreadDataEvent { private String callID = null; private int callerTid = -1; - public ThreadPageThreadDataEvent(ThreadPageThreadDataManager manager, - int eventType, int threadType, int apiType, double time, int tid, - List contents) { + public ThreadPageThreadDataEvent(int eventType, int threadType, + int apiType, double time, int tid, List contents) { + super(contents); setEventType(eventType); setThreadType(threadType); setApiType(apiType); setTime(time); setTid(tid); - setContents(contents); - // manager.pushEvent(this); } public int getEventType() { @@ -65,14 +61,6 @@ public class ThreadPageThreadDataEvent { this.eventType = eventType; } - public List getContents() { - return contents; - } - - public void setContents(List contents) { - this.contents = contents; - } - public DACustomChartSeriesItem getChartItem() { return chartItem; } @@ -93,11 +81,6 @@ public class ThreadPageThreadDataEvent { return data; } - public void setData(ThreadPageThreadData data) { - this.data = data; - data.pushEvent(this); - } - public int getTid() { return tid; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataManager.java index 7082df8..9b4864b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageThreadDataManager.java @@ -31,6 +31,7 @@ import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; @@ -54,9 +55,9 @@ public class ThreadPageThreadDataManager { private boolean hasUpdate = false; private List rows = new ArrayList(); private List rowsQueue = new ArrayList(); + private List syncEventQueue = new ArrayList(); private List eventQueue = new ArrayList(); private List callEventQueue = new ArrayList(); - private List calleeEventQueue = new ArrayList(); protected void pushRow(ThreadPageThreadData data) { rowsQueue.add(data); @@ -72,6 +73,11 @@ public class ThreadPageThreadDataManager { callEventQueue.add(event); } + protected void pushSyncEvent(ThreadPageSyncDataEvent syncEvent) { + syncEventQueue.add(syncEvent); + hasUpdate = true; + } + protected ThreadPageThreadDataManager(DACustomChartBoard board, ThreadChartView view) { this.setBoard(board); @@ -89,6 +95,50 @@ public class ThreadPageThreadDataManager { chart.redraw(); } + private void initSyncChart(DACustomChart chart) { + if (null == chart) { + return; + } + + DACustomChartSeries stateSeries = new DACustomChartSeries( + ThreadPageLabels.THREAD_SYNC_CHART_SERIES_STATE, + DACustomChartSeries.SERIES_STYLE_EVENT, ColorResources.RED); + + chart.addSeries(stateSeries); + + DACustomChartPlot plot = chart.getPlot(); + if (null == plot) { + return; + } + plot.setBackgroundImage(ImageResources.BG_CHILD_GRADIENT); + plot.setAutoHeightRange(false); + plot.setAxisRangeY(0, 101); + plot.setAxisRangeX(board.getVisibleStartTime(), + board.getVisibleEndTime()); + + chart.redraw(); + } + + private boolean createSyncBoardItem(ThreadPageThreadData data, + ThreadPageSyncData sync) { + DACustomChartBoardItem parent = data.getItem(); + if (null == parent) { + return false; + } + DACustomChartBoardItem item = new DACustomChartBoardItem(parent, + sync.getName() + ThreadPageLabels.THREAD_CHART_NAME_PREFIX + + sync.getType() + + ThreadPageLabels.THREAD_CHART_NAME_POSTFIX); + DACustomChart chart = item.getChart(); + initSyncChart(chart); + + sync.setItem(item); + item.setData(sync); + chart.setData(sync); + chart.redraw(); + return true; + } + private void sendSelectionTimes(DACustomChart chart, double start, double end) { long startTime = (long) (start * TimelineConstants.MEGA); @@ -106,8 +156,8 @@ public class ThreadPageThreadDataManager { chart.getData(), chart)); } - // FIXME : chart range selection - private Listener chartMouseListener = new Listener() { + // FIXME : chart range selection - change private + public Listener chartMouseListener = new Listener() { @Override public void handleEvent(Event event) { @@ -201,17 +251,10 @@ public class ThreadPageThreadDataManager { isStart = false; return; } - long startTime = 0; - ThreadPageThreadData mainData = new ThreadPageThreadData(this, - ThreadPageLabels.THREAD_ITEM_TYPE_MAIN, - tid, null); + ThreadPageThreadData mainData = new ThreadPageThreadData( + ThreadPageLabels.THREAD_ITEM_TYPE_MAIN, tid); pushRow(mainData); -// ThreadPageThreadDataEvent mainEvent = new ThreadPageThreadDataEvent( -// this, ThreadPageThreadDataEvent.TYPE_EVENT, -// LogCenterConstants.THREAD_TYPE_MAIN, -// LogCenterConstants.THREAD_API_TYPE_START, startTime, tid, null); -// pushEvent(mainEvent); } public List> getLogsFromLogPackage(LogPackage logPack, @@ -263,8 +306,8 @@ public class ThreadPageThreadDataManager { / TimelineConstants.MEGA; ThreadPageThreadDataEvent event = new ThreadPageThreadDataEvent( - this, ThreadPageThreadDataEvent.TYPE_LOAD, load, -1, - time, tid, null); + ThreadPageThreadDataEvent.TYPE_LOAD, load, -1, time, + tid, null); pushEvent(event); } } @@ -284,14 +327,14 @@ public class ThreadPageThreadDataManager { case LogCenterConstants.THREAD_API_TYPE_EXIT: case LogCenterConstants.THREAD_API_TYPE_WAIT_START: case LogCenterConstants.THREAD_API_TYPE_OTHER: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_API, LogCenterConstants.THREAD_TYPE_PTHREAD, apiType, time, tid, input); pushEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_START: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_API, LogCenterConstants.THREAD_TYPE_PTHREAD, apiType, time, tid, input); @@ -301,13 +344,14 @@ public class ThreadPageThreadDataManager { pushCallEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_WAIT_END: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_EVENT, LogCenterConstants.THREAD_TYPE_PTHREAD, apiType, time, tid, input); pushEvent(event); + break; case LogCenterConstants.THREAD_API_TYPE_INTERNAL_STOP: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_EVENT, LogCenterConstants.THREAD_TYPE_PTHREAD, apiType, time, tid, input); @@ -317,13 +361,10 @@ public class ThreadPageThreadDataManager { pushCallEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_INTERNAL_START: - String address = input - .get(LogCenterConstants.THREAD_PTHREAD_ID_INDEX); - ThreadPageThreadData data = new ThreadPageThreadData(this, - ThreadPageLabels.THREAD_ITEM_TYPE_PTHREAD, tid, - address); + ThreadPageThreadData data = new ThreadPageThreadData( + ThreadPageLabels.THREAD_ITEM_TYPE_PTHREAD, tid); pushRow(data); - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_EVENT, LogCenterConstants.THREAD_TYPE_PTHREAD, apiType, time, tid, input); @@ -348,14 +389,14 @@ public class ThreadPageThreadDataManager { case LogCenterConstants.THREAD_API_TYPE_EXIT: case LogCenterConstants.THREAD_API_TYPE_WAIT_START: case LogCenterConstants.THREAD_API_TYPE_OTHER: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_API, LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, input); pushEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_START: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_API, LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, input); @@ -365,14 +406,18 @@ public class ThreadPageThreadDataManager { pushCallEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_WAIT_END: - event = new ThreadPageThreadDataEvent(this, - ThreadPageThreadDataEvent.TYPE_EVENT, - LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, - input); - pushEvent(event); + if (input.get(LogCenterConstants.APINAME_INDEX).equals( + ThreadPageLabels.THREAD_API_JOIN)) { + event = new ThreadPageThreadDataEvent( + ThreadPageThreadDataEvent.TYPE_EVENT, + LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, + input); + pushEvent(event); + } else { // FIXME : do not shows sleep's wait end + } break; case LogCenterConstants.THREAD_API_TYPE_INTERNAL_STOP: - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_EVENT, LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, input); @@ -382,14 +427,10 @@ public class ThreadPageThreadDataManager { pushCallEvent(event); break; case LogCenterConstants.THREAD_API_TYPE_INTERNAL_START: - String address = input - .get(LogCenterConstants.THREAD_PTHREAD_ID_INDEX); ThreadPageThreadData data = new ThreadPageThreadData( - this, - ThreadPageLabels.THREAD_ITEM_TYPE_OSP, - tid, address); + ThreadPageLabels.THREAD_ITEM_TYPE_OSP, tid); pushRow(data); - event = new ThreadPageThreadDataEvent(this, + event = new ThreadPageThreadDataEvent( ThreadPageThreadDataEvent.TYPE_EVENT, LogCenterConstants.THREAD_TYPE_OSP, apiType, time, tid, input); @@ -427,10 +468,59 @@ public class ThreadPageThreadDataManager { } } + private void parseSync(LogPackage logPack) { + List> inputs = getLogsFromLogPackage(logPack, + LogCenterConstants.LOG_SYNC); + int size; + if (null == inputs || 0 == (size = inputs.size())) { + return; + } + List input; + for (int i = 0; i < size; i++) { + input = inputs.get(i); + // System.out.println("input : " + input); + double time = Double.parseDouble(input + .get(LogCenterConstants.TIME_INDEX)) + / TimelineConstants.MEGA; + int tid = Integer.parseInt(input + .get(LogCenterConstants.THREAD_ID_INDEX)); + + // FIXME + int type = Integer.parseInt(input + .get(LogCenterConstants.SYNC_TYPE_INDEX)); + int apiType = Integer.parseInt(input + .get(LogCenterConstants.SYNC_API_TYPE_INDEX)); + + String name = input.get(LogCenterConstants.SYNC_VAL_INDEX); + ThreadPageSyncDataEvent event; + switch (type) { + case LogCenterConstants.SYNC_TYPE_OSP_MUTEX: + case LogCenterConstants.SYNC_TYPE_OSP_MONITOR: + case LogCenterConstants.SYNC_TYPE_OSP_SEMAPHORE: + event = new ThreadPageSyncDataEvent(name, type, apiType, time, + tid, input); + pushSyncEvent(event); + // parseOSPSync(input, type); + break; + case LogCenterConstants.SYNC_TYPE_PTHREAD_MUTEX: + case LogCenterConstants.SYNC_TYPE_PTHREAD_COND_VARIABLE: + break; + case LogCenterConstants.SYNC_TYPE_PTHREAD_RWLOCK: + case LogCenterConstants.SYNC_TYPE_PTHREAD_SPINLOCK: + case LogCenterConstants.SYNC_TYPE_PTHREAD_BARRIER: + System.out.println("error : sync parse - type = " + type); + break; + default: + System.out.println("error : sync parse unknown - type = " + + type); + } + } + } + public void parsePageData(LogPackage logPack) { parseLoad(logPack); parseAPI(logPack); - // parseEvent(logPack); + parseSync(logPack); hasUpdate = true; } @@ -477,7 +567,6 @@ public class ThreadPageThreadDataManager { return true; } } - // if(callEvent.getContents().) } } return false; @@ -549,6 +638,30 @@ public class ThreadPageThreadDataManager { return null; } + private String getSyncTypeString(int syncType) { + switch (syncType) { + case LogCenterConstants.SYNC_TYPE_OSP_MUTEX: + return ThreadPageLabels.SYNC_TYPE_OSP_MUTEX; + case LogCenterConstants.SYNC_TYPE_OSP_MONITOR: + return ThreadPageLabels.SYNC_TYPE_OSP_MONITOR; + case LogCenterConstants.SYNC_TYPE_OSP_SEMAPHORE: + return ThreadPageLabels.SYNC_TYPE_OSP_SEMAPHORE; + case LogCenterConstants.SYNC_TYPE_PTHREAD_MUTEX: + return ThreadPageLabels.SYNC_TYPE_PTHREAD_MUTEX; + case LogCenterConstants.SYNC_TYPE_PTHREAD_COND_VARIABLE: + return ThreadPageLabels.SYNC_TYPE_PTHREAD_COND_VARIABLE; + case LogCenterConstants.SYNC_TYPE_PTHREAD_RWLOCK: + return ThreadPageLabels.SYNC_TYPE_PTHREAD_RWLOCK; + case LogCenterConstants.SYNC_TYPE_PTHREAD_SPINLOCK: + return ThreadPageLabels.SYNC_TYPE_PTHREAD_SPINLOCK; + case LogCenterConstants.SYNC_TYPE_PTHREAD_BARRIER: + return ThreadPageLabels.SYNC_TYPE_PTHREAD_BARRIER; + default: + return AnalyzerConstants.EMPTY; + } + + } + protected void checkUpdate() { if (false == hasUpdate) { return; @@ -557,8 +670,9 @@ public class ThreadPageThreadDataManager { } int size = rowsQueue.size(); if (size > 0) { + ThreadPageThreadData data; for (int i = 0; i < size; i++) { - ThreadPageThreadData data = rowsQueue.get(0); + data = rowsQueue.get(0); createBoardItem(data); rows.add(data); rowsQueue.remove(0); @@ -582,6 +696,31 @@ public class ThreadPageThreadDataManager { } } } + + size = syncEventQueue.size(); + if (size > 0) { + ThreadPageThreadData data; + ThreadPageSyncDataEvent event; + ThreadPageSyncData sync; + for (int i = 0; i < size; i++) { + event = syncEventQueue.get(0); + data = findParentData(event.getTid()); + if (null != data) { + sync = data.findSyncData(event.getSyncVal()); + if (null == sync) { + sync = new ThreadPageSyncData( + getSyncTypeString(event.getType()), + event.getSyncVal(), event.getTid()); + createSyncBoardItem(data, sync); + data.pushSync(sync); + } + sync.pushEvent(event); + data.setHasUpdate(); + } + syncEventQueue.remove(0); + } + } + size = rows.size(); if (size > 0) { ThreadPageThreadData data; @@ -590,7 +729,6 @@ public class ThreadPageThreadDataManager { data.checkUpdate(); } } - } public void clear() { @@ -599,7 +737,6 @@ public class ThreadPageThreadDataManager { rowsQueue.clear(); eventQueue.clear(); callEventQueue.clear(); - calleeEventQueue.clear(); isStart = false; hasUpdate = false; } diff --git a/org.tizen.dynamicanalyzer/theme/black/img/timeline_right_child_bg_normal.png b/org.tizen.dynamicanalyzer/theme/black/img/timeline_right_child_bg_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b16ca511b41e5f32dcceb90ee110d0205ea1443d GIT binary patch literal 2794 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf02@g} wK~yMHV>o`{(toC}U%xUiF#y3RF}T720GCPz>`w(EtDd literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer/theme/white/img/timeline_right_child_bg_normal.png b/org.tizen.dynamicanalyzer/theme/white/img/timeline_right_child_bg_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b16ca511b41e5f32dcceb90ee110d0205ea1443d GIT binary patch literal 2794 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf02@g} wK~yMHV>o`{(toC}U%xUiF#y3RF}T720GCPz>`w(EtDd literal 0 HcmV?d00001 -- 2.7.4